Name: Toh Kien Yu
Admin Number: 2222291
Class: DAAA/FT/2B/05

Background Research¶

Image classification is an important part of digital image analysis and plays a crucial role in real world applications. For instance, visual search, object detection and more.
In this assignment, I will be doing image classification on vegetables using a deep learning network.

In [1]:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.utils import image_dataset_from_directory
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# import seaborn as sns
# import tensorflow.keras.utils import load_img
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPooling2D,BatchNormalization,LeakyReLU,GlobalAveragePooling2D
from tensorflow.keras.utils import to_categorical
from tensorflow.keras import regularizers
from tensorflow.keras.layers.experimental.preprocessing import RandomFlip
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import RandomizedSearchCV, KFold
from tensorflow.keras.utils import plot_model
import scipy
import PIL
In [27]:
tf.config.list_physical_devices('GPU')
Out[27]:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

Loading 31 by 31 Dataset¶

Image Size set to 31 by 31, greyscale and 'categorical' label mode¶

In [28]:
train = image_dataset_from_directory(directory='./Dataset for CA1 part A/train',color_mode='grayscale',label_mode='categorical',image_size=(31,31))
test = image_dataset_from_directory(directory='./Dataset for CA1 part A/test',color_mode='grayscale',label_mode='categorical',image_size=(31,31))
validation = image_dataset_from_directory(directory='./Dataset for CA1 part A/validation',color_mode='grayscale',label_mode='categorical',image_size=(31,31))
Found 9028 files belonging to 15 classes.
Found 3000 files belonging to 15 classes.
Found 3000 files belonging to 15 classes.

Data Preparation¶

In [29]:
X_train = []
y_train = []

for images, labels in train:
    X_train.append(images)
    y_train.append(labels)

X_train = np.concatenate(X_train, axis=0)
X_train = np.squeeze(X_train, axis=-1)
y_train = np.concatenate(y_train, axis=0)
In [30]:
X_test = []
y_test = []

for images, labels in test:
    X_test.append(images)
    y_test.append(labels)

X_test = np.concatenate(X_test, axis=0)
X_test = np.squeeze(X_test, axis=-1)
y_test = np.concatenate(y_test, axis=0)
In [31]:
X_val = []
y_val = []

for images, labels in validation:
    X_val.append(images)
    y_val.append(labels)

X_val = np.concatenate(X_val, axis=0)
X_val = np.squeeze(X_val, axis=-1)
y_val = np.concatenate(y_val, axis=0)

Scaling the data to the range [0,1]¶

In [32]:
from tensorflow.keras.utils import to_categorical
X_train = np.array(X_train) / 255.0
X_test = np.array(X_test) / 255.0
X_val = np.array(X_val) / 255.0

Train, Test and Validation shape¶

In [33]:
print("Length of X train: " + str(len(X_train)))
print("Length of X test: " + str(len(X_test)))
print("Length of X validation: " + str(len(X_val)))
print("Length of y train: " + str(len(y_train)))
print("Length of y test: " + str(len(y_test)))
print("Length of y validation: " + str(len(y_val)))
Length of X train: 9028
Length of X test: 3000
Length of X validation: 3000
Length of y train: 9028
Length of y test: 3000
Length of y validation: 3000

Exploratory Data Analysis¶

31 by 31 Training Images (With Color)¶

In [19]:
import os
from tensorflow.keras.preprocessing import image
# classes = train.class_names
classes = ['Bean','Bitter_Gourd','Bottle_Gourd','Brinjal','Broccoli','Cabbage','Capsicum','Carrot','Cauliflower','Cucumber','Papaya','Potato','Pumpkin','Radish','Tomato']
trainDir = './Dataset for CA1 part A/train'

class_name = os.listdir(trainDir)
figure = plt.figure(figsize= (10,10))
for className in classes:
    classDir = os.path.join(trainDir,className)
    fileList = os.listdir(classDir) 
    if len(fileList) > 0:
        imagePath = os.path.join(classDir,fileList[0])
        img = image.load_img(imagePath,target_size=(31,31))
        ax = plt.subplot(5,3,classes.index(className)+1)
        plt.title(className)
        plt.imshow(img)
        plt.axis('off')

plt.show()

31 by 31 Training Images (Grayscale)¶

In [20]:
import os
from tensorflow.keras.preprocessing import image
# classes = train.class_names
classes = ['Bean','Bitter_Gourd','Bottle_Gourd','Brinjal','Broccoli','Cabbage','Capsicum','Carrot','Cauliflower','Cucumber','Papaya','Potato','Pumpkin','Radish','Tomato']
trainDir = './Dataset for CA1 part A/train'

class_name = os.listdir(trainDir)
figure = plt.figure(figsize= (10,10))
for className in classes:
    classDir = os.path.join(trainDir,className)
    fileList = os.listdir(classDir) 
    if len(fileList) > 0:
        imagePath = os.path.join(classDir,fileList[0])
        img = image.load_img(imagePath,target_size=(31,31),color_mode='grayscale')
        ax = plt.subplot(5,3,classes.index(className)+1)
        plt.title(className)
        plt.imshow(img,cmap='gray')
        plt.axis('off')

plt.show()

128 by 128 Training Images (With Color)¶

In [35]:
import os
from tensorflow.keras.preprocessing import image
# classes = train.class_names
classes = ['Bean','Bitter_Gourd','Bottle_Gourd','Brinjal','Broccoli','Cabbage','Capsicum','Carrot','Cauliflower','Cucumber','Papaya','Potato','Pumpkin','Radish','Tomato']
trainDir = './Dataset for CA1 part A/train'

class_name = os.listdir(trainDir)
figure = plt.figure(figsize= (10,10))
for className in classes:
    classDir = os.path.join(trainDir,className)
    fileList = os.listdir(classDir) 
    if len(fileList) > 0:
        imagePath = os.path.join(classDir,fileList[0])
        img = image.load_img(imagePath,target_size=(128,128))
        ax = plt.subplot(5,3,classes.index(className)+1)
        plt.title(className)
        plt.imshow(img)
        plt.axis('off')

plt.show()

128 by 128 Training Images (Grayscale)¶

In [36]:
import os
from tensorflow.keras.preprocessing import image
# classes = train.class_names
classes = ['Bean','Bitter_Gourd','Bottle_Gourd','Brinjal','Broccoli','Cabbage','Capsicum','Carrot','Cauliflower','Cucumber','Papaya','Potato','Pumpkin','Radish','Tomato']
trainDir = './Dataset for CA1 part A/train'

class_name = os.listdir(trainDir)
figure = plt.figure(figsize= (10,10))
for className in classes:
    classDir = os.path.join(trainDir,className)
    fileList = os.listdir(classDir) 
    if len(fileList) > 0:
        imagePath = os.path.join(classDir,fileList[0])
        img = image.load_img(imagePath,target_size=(128,128),color_mode='grayscale')
        ax = plt.subplot(5,3,classes.index(className)+1)
        plt.title(className)
        plt.imshow(img,cmap='gray')
        plt.axis('off')

plt.show()
In [80]:
import os
datasetDir = './Dataset for CA1 part A/train'
classNames = os.listdir(datasetDir)
classCounts = {}
for className in classNames:
    classDir = os.path.join(datasetDir,className)
    classCounts[className] = len(os.listdir(classDir))

plt.figure(figsize=(17,8))
plt.title("Training Data Distribution For Training Data")
plt.xlabel("Class Name")
plt.ylabel("Count of Image")
plt.bar(classCounts.keys(),classCounts.values())
plt.tight_layout()
plt.show()

Utilities¶

Function to plot model's accuracy and loss graph¶

In [2]:
def plotAUC(model):
    fig = plt.figure(figsize = (18,7))
    fig.set_facecolor('lightblue')
    fig.suptitle('Accuracy and Loss Graph')
    ax1 = fig.add_subplot(1,2,1)
    ax1.set_title('Model Accuracy')
    ax1.set_xlabel('Epoch')
    ax1.set_ylabel('Accuracy')
    ax1.plot(model.history['accuracy'])
    ax1.plot(model.history['val_accuracy'])
    ax1.legend(['Train','Validate'])

    ax2 = fig.add_subplot(1,2,2)
    ax2.set_title('Model Loss')
    ax2.set_xlabel('Epoch')
    ax2.set_ylabel('Loss')
    ax2.plot(model.history['loss'])
    ax2.plot(model.history['val_loss'])
    ax2.legend(['Train','Validate'])
    plt.tight_layout()
    plt.show()

Modeling (31 by 31)
I will make 3 Models and choose the best 2 models to further model improve

Model 1 (31 x 31)¶

Model 1 is designed to be a simple model¶

In [83]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())

model.add(Dense(256, activation='relu'))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 1s 12ms/step - loss: 2.3782 - accuracy: 0.2200 - val_loss: 2.2191 - val_accuracy: 0.3117
Epoch 2/100
71/71 [==============================] - 1s 8ms/step - loss: 1.8197 - accuracy: 0.4262 - val_loss: 1.8108 - val_accuracy: 0.4280
Epoch 3/100
71/71 [==============================] - 1s 8ms/step - loss: 1.4820 - accuracy: 0.5348 - val_loss: 1.5703 - val_accuracy: 0.5067
Epoch 4/100
71/71 [==============================] - 1s 8ms/step - loss: 1.2395 - accuracy: 0.6097 - val_loss: 1.2823 - val_accuracy: 0.5880
Epoch 5/100
71/71 [==============================] - 1s 8ms/step - loss: 1.0336 - accuracy: 0.6767 - val_loss: 1.1425 - val_accuracy: 0.6327
Epoch 6/100
71/71 [==============================] - 1s 8ms/step - loss: 0.9093 - accuracy: 0.7182 - val_loss: 1.0185 - val_accuracy: 0.6860
Epoch 7/100
71/71 [==============================] - 1s 8ms/step - loss: 0.7660 - accuracy: 0.7646 - val_loss: 1.0090 - val_accuracy: 0.6880
Epoch 8/100
71/71 [==============================] - 1s 8ms/step - loss: 0.6540 - accuracy: 0.8024 - val_loss: 0.8366 - val_accuracy: 0.7403
Epoch 9/100
71/71 [==============================] - 1s 8ms/step - loss: 0.5721 - accuracy: 0.8314 - val_loss: 0.8367 - val_accuracy: 0.7453
Epoch 10/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4847 - accuracy: 0.8561 - val_loss: 0.7480 - val_accuracy: 0.7663
Epoch 11/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4324 - accuracy: 0.8731 - val_loss: 0.6851 - val_accuracy: 0.7963
Epoch 12/100
71/71 [==============================] - 1s 8ms/step - loss: 0.3665 - accuracy: 0.8954 - val_loss: 0.6805 - val_accuracy: 0.7967
Epoch 13/100
71/71 [==============================] - 1s 8ms/step - loss: 0.3097 - accuracy: 0.9118 - val_loss: 0.6988 - val_accuracy: 0.7983
Epoch 14/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2658 - accuracy: 0.9249 - val_loss: 0.6649 - val_accuracy: 0.8007
Epoch 15/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2277 - accuracy: 0.9376 - val_loss: 0.6646 - val_accuracy: 0.8080
Epoch 16/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1894 - accuracy: 0.9498 - val_loss: 0.7186 - val_accuracy: 0.8013
Epoch 17/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1667 - accuracy: 0.9565 - val_loss: 0.7141 - val_accuracy: 0.8030
Epoch 18/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1356 - accuracy: 0.9672 - val_loss: 0.6524 - val_accuracy: 0.8227
Epoch 19/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1040 - accuracy: 0.9762 - val_loss: 0.6344 - val_accuracy: 0.8350
Epoch 20/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0866 - accuracy: 0.9832 - val_loss: 0.6622 - val_accuracy: 0.8263
Epoch 21/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0722 - accuracy: 0.9880 - val_loss: 0.6057 - val_accuracy: 0.8427
Epoch 22/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0724 - accuracy: 0.9856 - val_loss: 0.6104 - val_accuracy: 0.8430
Epoch 23/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0559 - accuracy: 0.9916 - val_loss: 0.6733 - val_accuracy: 0.8397
Epoch 24/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0560 - accuracy: 0.9908 - val_loss: 0.6283 - val_accuracy: 0.8460
Epoch 25/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0435 - accuracy: 0.9935 - val_loss: 0.6251 - val_accuracy: 0.8483
Epoch 26/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0259 - accuracy: 0.9978 - val_loss: 0.6767 - val_accuracy: 0.8493
Epoch 27/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0211 - accuracy: 0.9993 - val_loss: 0.7009 - val_accuracy: 0.8347
Epoch 28/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0158 - accuracy: 0.9998 - val_loss: 0.7129 - val_accuracy: 0.8430
Epoch 29/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0137 - accuracy: 0.9996 - val_loss: 0.6809 - val_accuracy: 0.8470
Epoch 30/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0114 - accuracy: 0.9994 - val_loss: 0.6705 - val_accuracy: 0.8513
Epoch 31/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0107 - accuracy: 0.9997 - val_loss: 0.7040 - val_accuracy: 0.8497
Epoch 32/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0092 - accuracy: 0.9999 - val_loss: 0.6921 - val_accuracy: 0.8490
Epoch 33/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0077 - accuracy: 0.9999 - val_loss: 0.7100 - val_accuracy: 0.8510
Epoch 34/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0066 - accuracy: 1.0000 - val_loss: 0.7174 - val_accuracy: 0.8547
Epoch 35/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0052 - accuracy: 1.0000 - val_loss: 0.7262 - val_accuracy: 0.8523
Epoch 36/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0049 - accuracy: 1.0000 - val_loss: 0.7457 - val_accuracy: 0.8517
Epoch 37/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0048 - accuracy: 1.0000 - val_loss: 0.7762 - val_accuracy: 0.8470
Epoch 38/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0041 - accuracy: 1.0000 - val_loss: 0.7521 - val_accuracy: 0.8517
Epoch 39/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0040 - accuracy: 1.0000 - val_loss: 0.7589 - val_accuracy: 0.8513
Epoch 40/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0034 - accuracy: 1.0000 - val_loss: 0.7677 - val_accuracy: 0.8530
Epoch 41/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0029 - accuracy: 1.0000 - val_loss: 0.7968 - val_accuracy: 0.8483
Epoch 42/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0027 - accuracy: 1.0000 - val_loss: 0.7760 - val_accuracy: 0.8523
Epoch 43/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0025 - accuracy: 1.0000 - val_loss: 0.7777 - val_accuracy: 0.8537
Epoch 44/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0023 - accuracy: 1.0000 - val_loss: 0.7904 - val_accuracy: 0.8520
Epoch 45/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0020 - accuracy: 1.0000 - val_loss: 0.7866 - val_accuracy: 0.8553
Epoch 46/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0019 - accuracy: 1.0000 - val_loss: 0.7975 - val_accuracy: 0.8553
Epoch 47/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0018 - accuracy: 1.0000 - val_loss: 0.8237 - val_accuracy: 0.8480
Epoch 48/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0017 - accuracy: 1.0000 - val_loss: 0.8120 - val_accuracy: 0.8500
Epoch 49/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0015 - accuracy: 1.0000 - val_loss: 0.8028 - val_accuracy: 0.8540
Epoch 50/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0015 - accuracy: 1.0000 - val_loss: 0.8094 - val_accuracy: 0.8527
Epoch 51/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.8207 - val_accuracy: 0.8553
Epoch 52/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.8279 - val_accuracy: 0.8553
Epoch 53/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.8229 - val_accuracy: 0.8577
Epoch 54/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0011 - accuracy: 1.0000 - val_loss: 0.8493 - val_accuracy: 0.8500
Epoch 55/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0011 - accuracy: 1.0000 - val_loss: 0.8587 - val_accuracy: 0.8507
Epoch 56/100
71/71 [==============================] - 1s 8ms/step - loss: 0.0010 - accuracy: 1.0000 - val_loss: 0.8531 - val_accuracy: 0.8533
Epoch 57/100
71/71 [==============================] - 1s 8ms/step - loss: 9.1940e-04 - accuracy: 1.0000 - val_loss: 0.8487 - val_accuracy: 0.8530
Epoch 58/100
71/71 [==============================] - 1s 8ms/step - loss: 8.6338e-04 - accuracy: 1.0000 - val_loss: 0.8583 - val_accuracy: 0.8517
Epoch 59/100
71/71 [==============================] - 1s 8ms/step - loss: 8.3636e-04 - accuracy: 1.0000 - val_loss: 0.8542 - val_accuracy: 0.8537
Epoch 60/100
71/71 [==============================] - 1s 8ms/step - loss: 7.7451e-04 - accuracy: 1.0000 - val_loss: 0.8696 - val_accuracy: 0.8503
Epoch 61/100
71/71 [==============================] - 1s 8ms/step - loss: 7.2633e-04 - accuracy: 1.0000 - val_loss: 0.8676 - val_accuracy: 0.8497
Epoch 62/100
71/71 [==============================] - 1s 8ms/step - loss: 6.9971e-04 - accuracy: 1.0000 - val_loss: 0.8793 - val_accuracy: 0.8523
Epoch 63/100
71/71 [==============================] - 1s 8ms/step - loss: 6.5307e-04 - accuracy: 1.0000 - val_loss: 0.8798 - val_accuracy: 0.8523
Epoch 64/100
71/71 [==============================] - 1s 8ms/step - loss: 6.0786e-04 - accuracy: 1.0000 - val_loss: 0.8871 - val_accuracy: 0.8510
Epoch 65/100
71/71 [==============================] - 1s 8ms/step - loss: 5.8795e-04 - accuracy: 1.0000 - val_loss: 0.8838 - val_accuracy: 0.8533
Epoch 66/100
71/71 [==============================] - 1s 8ms/step - loss: 5.5587e-04 - accuracy: 1.0000 - val_loss: 0.8733 - val_accuracy: 0.8567
Epoch 67/100
71/71 [==============================] - 1s 8ms/step - loss: 5.1927e-04 - accuracy: 1.0000 - val_loss: 0.8936 - val_accuracy: 0.8553
Epoch 68/100
71/71 [==============================] - 1s 8ms/step - loss: 4.9019e-04 - accuracy: 1.0000 - val_loss: 0.9119 - val_accuracy: 0.8527
Epoch 69/100
71/71 [==============================] - 1s 8ms/step - loss: 4.7503e-04 - accuracy: 1.0000 - val_loss: 0.9144 - val_accuracy: 0.8493
Epoch 70/100
71/71 [==============================] - 1s 8ms/step - loss: 4.4850e-04 - accuracy: 1.0000 - val_loss: 0.9195 - val_accuracy: 0.8510
Epoch 71/100
71/71 [==============================] - 1s 8ms/step - loss: 4.2417e-04 - accuracy: 1.0000 - val_loss: 0.9145 - val_accuracy: 0.8520
Epoch 72/100
71/71 [==============================] - 1s 8ms/step - loss: 4.0154e-04 - accuracy: 1.0000 - val_loss: 0.9320 - val_accuracy: 0.8510
Epoch 73/100
71/71 [==============================] - 1s 8ms/step - loss: 3.8718e-04 - accuracy: 1.0000 - val_loss: 0.9305 - val_accuracy: 0.8510
Epoch 74/100
71/71 [==============================] - 1s 8ms/step - loss: 3.6774e-04 - accuracy: 1.0000 - val_loss: 0.9282 - val_accuracy: 0.8527
Epoch 75/100
71/71 [==============================] - 1s 8ms/step - loss: 3.4381e-04 - accuracy: 1.0000 - val_loss: 0.9234 - val_accuracy: 0.8543
Epoch 76/100
71/71 [==============================] - 1s 8ms/step - loss: 3.2485e-04 - accuracy: 1.0000 - val_loss: 0.9346 - val_accuracy: 0.8547
Epoch 77/100
71/71 [==============================] - 1s 8ms/step - loss: 3.1702e-04 - accuracy: 1.0000 - val_loss: 0.9443 - val_accuracy: 0.8513
Epoch 78/100
71/71 [==============================] - 1s 8ms/step - loss: 2.9470e-04 - accuracy: 1.0000 - val_loss: 0.9567 - val_accuracy: 0.8533
Epoch 79/100
71/71 [==============================] - 1s 8ms/step - loss: 2.7752e-04 - accuracy: 1.0000 - val_loss: 0.9527 - val_accuracy: 0.8547
Epoch 80/100
71/71 [==============================] - 1s 8ms/step - loss: 2.7201e-04 - accuracy: 1.0000 - val_loss: 0.9481 - val_accuracy: 0.8520
Epoch 81/100
71/71 [==============================] - 1s 8ms/step - loss: 2.5035e-04 - accuracy: 1.0000 - val_loss: 0.9586 - val_accuracy: 0.8523
Epoch 82/100
71/71 [==============================] - 1s 8ms/step - loss: 2.3938e-04 - accuracy: 1.0000 - val_loss: 0.9540 - val_accuracy: 0.8537
Epoch 83/100
71/71 [==============================] - 1s 8ms/step - loss: 2.3213e-04 - accuracy: 1.0000 - val_loss: 0.9639 - val_accuracy: 0.8520
Epoch 84/100
71/71 [==============================] - 1s 8ms/step - loss: 2.1071e-04 - accuracy: 1.0000 - val_loss: 0.9713 - val_accuracy: 0.8537
Epoch 85/100
71/71 [==============================] - 1s 8ms/step - loss: 2.0349e-04 - accuracy: 1.0000 - val_loss: 0.9734 - val_accuracy: 0.8560
Epoch 86/100
71/71 [==============================] - 1s 8ms/step - loss: 1.9276e-04 - accuracy: 1.0000 - val_loss: 0.9755 - val_accuracy: 0.8543
Epoch 87/100
71/71 [==============================] - 1s 8ms/step - loss: 1.8004e-04 - accuracy: 1.0000 - val_loss: 0.9733 - val_accuracy: 0.8550
Epoch 88/100
71/71 [==============================] - 1s 8ms/step - loss: 1.7110e-04 - accuracy: 1.0000 - val_loss: 0.9842 - val_accuracy: 0.8520
Epoch 89/100
71/71 [==============================] - 1s 8ms/step - loss: 1.6201e-04 - accuracy: 1.0000 - val_loss: 0.9891 - val_accuracy: 0.8530
Epoch 90/100
71/71 [==============================] - 1s 8ms/step - loss: 1.5571e-04 - accuracy: 1.0000 - val_loss: 0.9932 - val_accuracy: 0.8553
Epoch 91/100
71/71 [==============================] - 1s 8ms/step - loss: 1.4847e-04 - accuracy: 1.0000 - val_loss: 0.9929 - val_accuracy: 0.8540
Epoch 92/100
71/71 [==============================] - 1s 8ms/step - loss: 1.4068e-04 - accuracy: 1.0000 - val_loss: 1.0032 - val_accuracy: 0.8537
Epoch 93/100
71/71 [==============================] - 1s 8ms/step - loss: 1.3143e-04 - accuracy: 1.0000 - val_loss: 1.0035 - val_accuracy: 0.8533
Epoch 94/100
71/71 [==============================] - 1s 8ms/step - loss: 1.2568e-04 - accuracy: 1.0000 - val_loss: 1.0041 - val_accuracy: 0.8527
Epoch 95/100
71/71 [==============================] - 1s 8ms/step - loss: 1.1935e-04 - accuracy: 1.0000 - val_loss: 1.0187 - val_accuracy: 0.8513
Epoch 96/100
71/71 [==============================] - 1s 8ms/step - loss: 1.1529e-04 - accuracy: 1.0000 - val_loss: 1.0161 - val_accuracy: 0.8537
Epoch 97/100
71/71 [==============================] - 1s 8ms/step - loss: 1.0873e-04 - accuracy: 1.0000 - val_loss: 1.0201 - val_accuracy: 0.8553
Epoch 98/100
71/71 [==============================] - 1s 8ms/step - loss: 1.0411e-04 - accuracy: 1.0000 - val_loss: 1.0303 - val_accuracy: 0.8553
Epoch 99/100
71/71 [==============================] - 1s 8ms/step - loss: 9.8915e-05 - accuracy: 1.0000 - val_loss: 1.0308 - val_accuracy: 0.8523
Epoch 100/100
71/71 [==============================] - 1s 8ms/step - loss: 9.4240e-05 - accuracy: 1.0000 - val_loss: 1.0342 - val_accuracy: 0.8537
94/94 [==============================] - 0s 3ms/step - loss: 0.8785 - accuracy: 0.8643
CNN Error: 13.57%

The model is overfitting, achieving a high training accuracy of 1.0 whereas a lower validation score
To handle the overfitting issue, we will introduce Dropouts into our layers.

In [84]:
# Model 1
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)
model.save_weights("./CNN Weights (31 by 31)/model1.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 11ms/step - loss: 2.5183 - accuracy: 0.1646 - val_loss: 2.4102 - val_accuracy: 0.2410
Epoch 2/100
71/71 [==============================] - 1s 9ms/step - loss: 2.1042 - accuracy: 0.3281 - val_loss: 1.9684 - val_accuracy: 0.3987
Epoch 3/100
71/71 [==============================] - 1s 9ms/step - loss: 1.8322 - accuracy: 0.4197 - val_loss: 1.7108 - val_accuracy: 0.4813
Epoch 4/100
71/71 [==============================] - 1s 9ms/step - loss: 1.6353 - accuracy: 0.4744 - val_loss: 1.5148 - val_accuracy: 0.5273
Epoch 5/100
71/71 [==============================] - 1s 9ms/step - loss: 1.4793 - accuracy: 0.5247 - val_loss: 1.4051 - val_accuracy: 0.5453
Epoch 6/100
71/71 [==============================] - 1s 9ms/step - loss: 1.3552 - accuracy: 0.5630 - val_loss: 1.2709 - val_accuracy: 0.5930
Epoch 7/100
71/71 [==============================] - 1s 9ms/step - loss: 1.2569 - accuracy: 0.5949 - val_loss: 1.1353 - val_accuracy: 0.6463
Epoch 8/100
71/71 [==============================] - 1s 9ms/step - loss: 1.1556 - accuracy: 0.6265 - val_loss: 1.0198 - val_accuracy: 0.6857
Epoch 9/100
71/71 [==============================] - 1s 9ms/step - loss: 1.0851 - accuracy: 0.6499 - val_loss: 0.9906 - val_accuracy: 0.6957
Epoch 10/100
71/71 [==============================] - 1s 9ms/step - loss: 1.0138 - accuracy: 0.6655 - val_loss: 0.8936 - val_accuracy: 0.7273
Epoch 11/100
71/71 [==============================] - 1s 9ms/step - loss: 0.9370 - accuracy: 0.6932 - val_loss: 0.8625 - val_accuracy: 0.7323
Epoch 12/100
71/71 [==============================] - 1s 9ms/step - loss: 0.8762 - accuracy: 0.7139 - val_loss: 0.7825 - val_accuracy: 0.7597
Epoch 13/100
71/71 [==============================] - 1s 8ms/step - loss: 0.8370 - accuracy: 0.7294 - val_loss: 0.7334 - val_accuracy: 0.7773
Epoch 14/100
71/71 [==============================] - 1s 9ms/step - loss: 0.7849 - accuracy: 0.7458 - val_loss: 0.7321 - val_accuracy: 0.7770
Epoch 15/100
71/71 [==============================] - 1s 9ms/step - loss: 0.7696 - accuracy: 0.7478 - val_loss: 0.6908 - val_accuracy: 0.8023
Epoch 16/100
71/71 [==============================] - 1s 9ms/step - loss: 0.7191 - accuracy: 0.7611 - val_loss: 0.7038 - val_accuracy: 0.7890
Epoch 17/100
71/71 [==============================] - 1s 8ms/step - loss: 0.6910 - accuracy: 0.7738 - val_loss: 0.7655 - val_accuracy: 0.7653
Epoch 18/100
71/71 [==============================] - 1s 8ms/step - loss: 0.6707 - accuracy: 0.7817 - val_loss: 0.6434 - val_accuracy: 0.8070
Epoch 19/100
71/71 [==============================] - 1s 8ms/step - loss: 0.6244 - accuracy: 0.7893 - val_loss: 0.5893 - val_accuracy: 0.8237
Epoch 20/100
71/71 [==============================] - 1s 9ms/step - loss: 0.6082 - accuracy: 0.8003 - val_loss: 0.5710 - val_accuracy: 0.8320
Epoch 21/100
71/71 [==============================] - 1s 9ms/step - loss: 0.5712 - accuracy: 0.8170 - val_loss: 0.5698 - val_accuracy: 0.8287
Epoch 22/100
71/71 [==============================] - 1s 9ms/step - loss: 0.5369 - accuracy: 0.8233 - val_loss: 0.5446 - val_accuracy: 0.8363
Epoch 23/100
71/71 [==============================] - 1s 8ms/step - loss: 0.5140 - accuracy: 0.8340 - val_loss: 0.5467 - val_accuracy: 0.8317
Epoch 24/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4995 - accuracy: 0.8316 - val_loss: 0.5487 - val_accuracy: 0.8340
Epoch 25/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4893 - accuracy: 0.8371 - val_loss: 0.5042 - val_accuracy: 0.8493
Epoch 26/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4843 - accuracy: 0.8396 - val_loss: 0.4849 - val_accuracy: 0.8610
Epoch 27/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4347 - accuracy: 0.8554 - val_loss: 0.4843 - val_accuracy: 0.8560
Epoch 28/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4460 - accuracy: 0.8548 - val_loss: 0.4866 - val_accuracy: 0.8603
Epoch 29/100
71/71 [==============================] - 1s 8ms/step - loss: 0.4137 - accuracy: 0.8638 - val_loss: 0.4648 - val_accuracy: 0.8600
Epoch 30/100
71/71 [==============================] - 1s 8ms/step - loss: 0.3998 - accuracy: 0.8655 - val_loss: 0.4529 - val_accuracy: 0.8637
Epoch 31/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3828 - accuracy: 0.8715 - val_loss: 0.4597 - val_accuracy: 0.8647
Epoch 32/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3891 - accuracy: 0.8682 - val_loss: 0.4828 - val_accuracy: 0.8587
Epoch 33/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3633 - accuracy: 0.8770 - val_loss: 0.4580 - val_accuracy: 0.8650
Epoch 34/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3573 - accuracy: 0.8793 - val_loss: 0.4489 - val_accuracy: 0.8713
Epoch 35/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3559 - accuracy: 0.8831 - val_loss: 0.4399 - val_accuracy: 0.8690
Epoch 36/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3418 - accuracy: 0.8830 - val_loss: 0.4373 - val_accuracy: 0.8710
Epoch 37/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3167 - accuracy: 0.8971 - val_loss: 0.4838 - val_accuracy: 0.8663
Epoch 38/100
71/71 [==============================] - 1s 8ms/step - loss: 0.3278 - accuracy: 0.8868 - val_loss: 0.4404 - val_accuracy: 0.8770
Epoch 39/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3261 - accuracy: 0.8874 - val_loss: 0.4494 - val_accuracy: 0.8673
Epoch 40/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3046 - accuracy: 0.8984 - val_loss: 0.4448 - val_accuracy: 0.8763
Epoch 41/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2883 - accuracy: 0.9022 - val_loss: 0.4384 - val_accuracy: 0.8713
Epoch 42/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2924 - accuracy: 0.9012 - val_loss: 0.4646 - val_accuracy: 0.8717
Epoch 43/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2824 - accuracy: 0.9030 - val_loss: 0.4213 - val_accuracy: 0.8807
Epoch 44/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2628 - accuracy: 0.9086 - val_loss: 0.4068 - val_accuracy: 0.8877
Epoch 45/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2733 - accuracy: 0.9088 - val_loss: 0.4440 - val_accuracy: 0.8773
Epoch 46/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2472 - accuracy: 0.9170 - val_loss: 0.4170 - val_accuracy: 0.8860
Epoch 47/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2372 - accuracy: 0.9164 - val_loss: 0.4207 - val_accuracy: 0.8820
Epoch 48/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2330 - accuracy: 0.9195 - val_loss: 0.4373 - val_accuracy: 0.8833
Epoch 49/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2528 - accuracy: 0.9165 - val_loss: 0.4254 - val_accuracy: 0.8810
Epoch 50/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2419 - accuracy: 0.9168 - val_loss: 0.4736 - val_accuracy: 0.8763
Epoch 51/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2409 - accuracy: 0.9158 - val_loss: 0.4357 - val_accuracy: 0.8747
Epoch 52/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2237 - accuracy: 0.9224 - val_loss: 0.3998 - val_accuracy: 0.8933
Epoch 53/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2091 - accuracy: 0.9310 - val_loss: 0.4212 - val_accuracy: 0.8933
Epoch 54/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2113 - accuracy: 0.9270 - val_loss: 0.4439 - val_accuracy: 0.8847
Epoch 55/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1953 - accuracy: 0.9308 - val_loss: 0.4040 - val_accuracy: 0.8963
Epoch 56/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2008 - accuracy: 0.9324 - val_loss: 0.4466 - val_accuracy: 0.8867
Epoch 57/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2075 - accuracy: 0.9309 - val_loss: 0.4378 - val_accuracy: 0.8893
Epoch 58/100
71/71 [==============================] - 1s 8ms/step - loss: 0.2210 - accuracy: 0.9230 - val_loss: 0.5012 - val_accuracy: 0.8763
Epoch 59/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2011 - accuracy: 0.9291 - val_loss: 0.4273 - val_accuracy: 0.8890
Epoch 60/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1947 - accuracy: 0.9351 - val_loss: 0.4408 - val_accuracy: 0.8817
Epoch 61/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1850 - accuracy: 0.9385 - val_loss: 0.4074 - val_accuracy: 0.8943
Epoch 62/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1798 - accuracy: 0.9386 - val_loss: 0.4567 - val_accuracy: 0.8883
Epoch 63/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1878 - accuracy: 0.9332 - val_loss: 0.4469 - val_accuracy: 0.8867
Epoch 64/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1786 - accuracy: 0.9403 - val_loss: 0.4255 - val_accuracy: 0.8897
Epoch 65/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1768 - accuracy: 0.9397 - val_loss: 0.4788 - val_accuracy: 0.8753
Epoch 66/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1771 - accuracy: 0.9364 - val_loss: 0.4066 - val_accuracy: 0.8913
Epoch 67/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1660 - accuracy: 0.9430 - val_loss: 0.4304 - val_accuracy: 0.8900
Epoch 68/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1593 - accuracy: 0.9446 - val_loss: 0.4330 - val_accuracy: 0.8917
Epoch 69/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1611 - accuracy: 0.9434 - val_loss: 0.4360 - val_accuracy: 0.8983
Epoch 70/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1526 - accuracy: 0.9478 - val_loss: 0.4630 - val_accuracy: 0.8857
Epoch 71/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1469 - accuracy: 0.9485 - val_loss: 0.4448 - val_accuracy: 0.8890
Epoch 72/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1688 - accuracy: 0.9406 - val_loss: 0.4660 - val_accuracy: 0.8873
Epoch 73/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1494 - accuracy: 0.9503 - val_loss: 0.4001 - val_accuracy: 0.8987
Epoch 74/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1495 - accuracy: 0.9472 - val_loss: 0.4512 - val_accuracy: 0.8897
Epoch 75/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1550 - accuracy: 0.9446 - val_loss: 0.4406 - val_accuracy: 0.8937
Epoch 76/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1525 - accuracy: 0.9458 - val_loss: 0.4266 - val_accuracy: 0.8957
Epoch 77/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1402 - accuracy: 0.9512 - val_loss: 0.4194 - val_accuracy: 0.8967
Epoch 78/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1398 - accuracy: 0.9519 - val_loss: 0.4282 - val_accuracy: 0.8987
Epoch 79/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1273 - accuracy: 0.9589 - val_loss: 0.4260 - val_accuracy: 0.8973
Epoch 80/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1300 - accuracy: 0.9538 - val_loss: 0.4129 - val_accuracy: 0.9020
Epoch 81/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1324 - accuracy: 0.9540 - val_loss: 0.4581 - val_accuracy: 0.8943
Epoch 82/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1641 - accuracy: 0.9445 - val_loss: 0.4766 - val_accuracy: 0.8930
Epoch 83/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1381 - accuracy: 0.9528 - val_loss: 0.4939 - val_accuracy: 0.8877
Epoch 84/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1419 - accuracy: 0.9496 - val_loss: 0.4499 - val_accuracy: 0.8953
Epoch 85/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1292 - accuracy: 0.9539 - val_loss: 0.4908 - val_accuracy: 0.8847
Epoch 86/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1155 - accuracy: 0.9578 - val_loss: 0.4509 - val_accuracy: 0.8967
Epoch 87/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1235 - accuracy: 0.9576 - val_loss: 0.4473 - val_accuracy: 0.9020
Epoch 88/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1158 - accuracy: 0.9579 - val_loss: 0.4749 - val_accuracy: 0.8873
Epoch 89/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1218 - accuracy: 0.9589 - val_loss: 0.4320 - val_accuracy: 0.9007
Epoch 90/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1314 - accuracy: 0.9530 - val_loss: 0.4929 - val_accuracy: 0.8950
Epoch 91/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1159 - accuracy: 0.9597 - val_loss: 0.4555 - val_accuracy: 0.8957
Epoch 92/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1211 - accuracy: 0.9582 - val_loss: 0.4702 - val_accuracy: 0.8963
Epoch 93/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1178 - accuracy: 0.9601 - val_loss: 0.4465 - val_accuracy: 0.9017
Epoch 94/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1102 - accuracy: 0.9612 - val_loss: 0.4779 - val_accuracy: 0.8933
Epoch 95/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1160 - accuracy: 0.9568 - val_loss: 0.4869 - val_accuracy: 0.8977
Epoch 96/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1363 - accuracy: 0.9507 - val_loss: 0.4696 - val_accuracy: 0.8933
Epoch 97/100
71/71 [==============================] - 1s 8ms/step - loss: 0.1030 - accuracy: 0.9660 - val_loss: 0.4952 - val_accuracy: 0.8963
Epoch 98/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0995 - accuracy: 0.9661 - val_loss: 0.4674 - val_accuracy: 0.8923
Epoch 99/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1070 - accuracy: 0.9649 - val_loss: 0.4615 - val_accuracy: 0.8947
Epoch 100/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1038 - accuracy: 0.9651 - val_loss: 0.4863 - val_accuracy: 0.8970
94/94 [==============================] - 0s 3ms/step - loss: 0.4075 - accuracy: 0.9060
CNN Error: 9.40%
In [85]:
model.summary()
Model: "sequential_23"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d_64 (Conv2D)          (None, 29, 29, 64)        640       
                                                                 
 max_pooling2d_58 (MaxPoolin  (None, 14, 14, 64)       0         
 g2D)                                                            
                                                                 
 dropout_57 (Dropout)        (None, 14, 14, 64)        0         
                                                                 
 conv2d_65 (Conv2D)          (None, 12, 12, 128)       73856     
                                                                 
 max_pooling2d_59 (MaxPoolin  (None, 6, 6, 128)        0         
 g2D)                                                            
                                                                 
 dropout_58 (Dropout)        (None, 6, 6, 128)         0         
                                                                 
 flatten_19 (Flatten)        (None, 4608)              0         
                                                                 
 dense_55 (Dense)            (None, 256)               1179904   
                                                                 
 dropout_59 (Dropout)        (None, 256)               0         
                                                                 
 dense_56 (Dense)            (None, 15)                3855      
                                                                 
=================================================================
Total params: 1,258,255
Trainable params: 1,258,255
Non-trainable params: 0
_________________________________________________________________

Load model 1¶

In [86]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.load_weights("./CNN Weights (31 by 31)/model1.h5")

Model 2 (31 x 31)¶

Model 2 will be a deeper model with extra layers compared to Model 1. This complexity aims to capture more patterns when classifying the image¶

To start off, we will first compare whether Flatten or GlobalAveragePooling2D gives a better accuracy¶

Flatten¶

In [90]:
# Model 2
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 15ms/step - loss: 2.5758 - accuracy: 0.1089 - val_loss: 2.6219 - val_accuracy: 0.0910
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.3904 - accuracy: 0.1712 - val_loss: 2.4330 - val_accuracy: 0.1590
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 2.1387 - accuracy: 0.2761 - val_loss: 2.0296 - val_accuracy: 0.3433
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 1.8318 - accuracy: 0.4008 - val_loss: 1.7370 - val_accuracy: 0.4137
Epoch 5/100
71/71 [==============================] - 1s 9ms/step - loss: 1.5841 - accuracy: 0.4747 - val_loss: 1.5627 - val_accuracy: 0.4763
Epoch 6/100
71/71 [==============================] - 1s 9ms/step - loss: 1.3590 - accuracy: 0.5516 - val_loss: 1.3638 - val_accuracy: 0.5450
Epoch 7/100
71/71 [==============================] - 1s 9ms/step - loss: 1.2277 - accuracy: 0.5964 - val_loss: 1.1480 - val_accuracy: 0.6197
Epoch 8/100
71/71 [==============================] - 1s 9ms/step - loss: 1.0346 - accuracy: 0.6614 - val_loss: 1.0649 - val_accuracy: 0.6563
Epoch 9/100
71/71 [==============================] - 1s 9ms/step - loss: 0.9259 - accuracy: 0.6962 - val_loss: 0.9080 - val_accuracy: 0.7030
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8279 - accuracy: 0.7278 - val_loss: 0.8677 - val_accuracy: 0.7153
Epoch 11/100
71/71 [==============================] - 1s 9ms/step - loss: 0.7395 - accuracy: 0.7601 - val_loss: 0.7387 - val_accuracy: 0.7577
Epoch 12/100
71/71 [==============================] - 1s 9ms/step - loss: 0.6633 - accuracy: 0.7897 - val_loss: 0.7660 - val_accuracy: 0.7430
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6075 - accuracy: 0.8090 - val_loss: 0.6957 - val_accuracy: 0.7763
Epoch 14/100
71/71 [==============================] - 1s 9ms/step - loss: 0.5731 - accuracy: 0.8209 - val_loss: 1.2147 - val_accuracy: 0.6143
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5230 - accuracy: 0.8340 - val_loss: 0.5323 - val_accuracy: 0.8347
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4053 - accuracy: 0.8689 - val_loss: 0.5128 - val_accuracy: 0.8420
Epoch 17/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3444 - accuracy: 0.8918 - val_loss: 0.5252 - val_accuracy: 0.8333
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3430 - accuracy: 0.8881 - val_loss: 0.4993 - val_accuracy: 0.8417
Epoch 19/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3096 - accuracy: 0.8988 - val_loss: 0.4428 - val_accuracy: 0.8610
Epoch 20/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2645 - accuracy: 0.9134 - val_loss: 0.4391 - val_accuracy: 0.8683
Epoch 21/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2558 - accuracy: 0.9173 - val_loss: 0.4313 - val_accuracy: 0.8690
Epoch 22/100
71/71 [==============================] - 1s 9ms/step - loss: 0.2157 - accuracy: 0.9303 - val_loss: 0.4174 - val_accuracy: 0.8793
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1913 - accuracy: 0.9363 - val_loss: 0.5705 - val_accuracy: 0.8357
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1857 - accuracy: 0.9402 - val_loss: 0.4932 - val_accuracy: 0.8610
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1726 - accuracy: 0.9464 - val_loss: 0.4206 - val_accuracy: 0.8783
Epoch 26/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1661 - accuracy: 0.9454 - val_loss: 0.4650 - val_accuracy: 0.8677
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1693 - accuracy: 0.9457 - val_loss: 0.3908 - val_accuracy: 0.8873
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1276 - accuracy: 0.9596 - val_loss: 0.4274 - val_accuracy: 0.8800
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1224 - accuracy: 0.9611 - val_loss: 0.4225 - val_accuracy: 0.8910
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1035 - accuracy: 0.9670 - val_loss: 0.4274 - val_accuracy: 0.8860
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1323 - accuracy: 0.9564 - val_loss: 0.4424 - val_accuracy: 0.8790
Epoch 32/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1171 - accuracy: 0.9640 - val_loss: 0.5101 - val_accuracy: 0.8727
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1013 - accuracy: 0.9667 - val_loss: 0.3972 - val_accuracy: 0.8960
Epoch 34/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0780 - accuracy: 0.9742 - val_loss: 0.4896 - val_accuracy: 0.8820
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0869 - accuracy: 0.9728 - val_loss: 0.4781 - val_accuracy: 0.8840
Epoch 36/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0761 - accuracy: 0.9749 - val_loss: 0.4758 - val_accuracy: 0.8950
Epoch 37/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0937 - accuracy: 0.9696 - val_loss: 0.6914 - val_accuracy: 0.8410
Epoch 38/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1153 - accuracy: 0.9630 - val_loss: 0.4084 - val_accuracy: 0.9010
Epoch 39/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0633 - accuracy: 0.9807 - val_loss: 0.4450 - val_accuracy: 0.8990
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0601 - accuracy: 0.9811 - val_loss: 0.4556 - val_accuracy: 0.8970
Epoch 41/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0626 - accuracy: 0.9803 - val_loss: 0.4528 - val_accuracy: 0.9027
Epoch 42/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0607 - accuracy: 0.9802 - val_loss: 0.4516 - val_accuracy: 0.9020
Epoch 43/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0721 - accuracy: 0.9770 - val_loss: 0.4597 - val_accuracy: 0.9023
Epoch 44/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0464 - accuracy: 0.9865 - val_loss: 0.4010 - val_accuracy: 0.9107
Epoch 45/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0497 - accuracy: 0.9847 - val_loss: 0.4209 - val_accuracy: 0.9080
Epoch 46/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0663 - accuracy: 0.9790 - val_loss: 0.5177 - val_accuracy: 0.8833
Epoch 47/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0630 - accuracy: 0.9805 - val_loss: 0.4403 - val_accuracy: 0.9010
Epoch 48/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0569 - accuracy: 0.9822 - val_loss: 0.5334 - val_accuracy: 0.8837
Epoch 49/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0756 - accuracy: 0.9765 - val_loss: 0.5000 - val_accuracy: 0.8927
Epoch 50/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0456 - accuracy: 0.9868 - val_loss: 0.4452 - val_accuracy: 0.9013
Epoch 51/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0501 - accuracy: 0.9846 - val_loss: 0.4059 - val_accuracy: 0.9100
Epoch 52/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0726 - accuracy: 0.9772 - val_loss: 0.5108 - val_accuracy: 0.8820
Epoch 53/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0754 - accuracy: 0.9763 - val_loss: 0.5328 - val_accuracy: 0.8830
Epoch 54/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0504 - accuracy: 0.9843 - val_loss: 0.4688 - val_accuracy: 0.9053
Epoch 55/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0473 - accuracy: 0.9849 - val_loss: 0.4774 - val_accuracy: 0.9020
Epoch 56/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0442 - accuracy: 0.9855 - val_loss: 0.4940 - val_accuracy: 0.8927
Epoch 57/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0671 - accuracy: 0.9781 - val_loss: 0.6304 - val_accuracy: 0.8810
Epoch 58/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0563 - accuracy: 0.9824 - val_loss: 0.4394 - val_accuracy: 0.9070
Epoch 59/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0327 - accuracy: 0.9887 - val_loss: 0.4808 - val_accuracy: 0.9013
Epoch 60/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0366 - accuracy: 0.9870 - val_loss: 0.4704 - val_accuracy: 0.9057
Epoch 61/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0338 - accuracy: 0.9900 - val_loss: 0.6087 - val_accuracy: 0.8727
Epoch 62/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0713 - accuracy: 0.9776 - val_loss: 0.5030 - val_accuracy: 0.8910
Epoch 63/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0425 - accuracy: 0.9869 - val_loss: 0.5145 - val_accuracy: 0.9000
Epoch 64/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0437 - accuracy: 0.9872 - val_loss: 0.4725 - val_accuracy: 0.9037
Epoch 65/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0324 - accuracy: 0.9901 - val_loss: 0.4673 - val_accuracy: 0.9077
Epoch 66/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0276 - accuracy: 0.9907 - val_loss: 0.4664 - val_accuracy: 0.9070
Epoch 67/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0302 - accuracy: 0.9888 - val_loss: 0.6909 - val_accuracy: 0.8710
Epoch 68/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0322 - accuracy: 0.9896 - val_loss: 0.4533 - val_accuracy: 0.9073
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0327 - accuracy: 0.9901 - val_loss: 0.4982 - val_accuracy: 0.9030
Epoch 70/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0391 - accuracy: 0.9880 - val_loss: 0.4519 - val_accuracy: 0.9053
Epoch 71/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0405 - accuracy: 0.9870 - val_loss: 0.5204 - val_accuracy: 0.8927
Epoch 72/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0285 - accuracy: 0.9920 - val_loss: 0.4667 - val_accuracy: 0.9127
Epoch 73/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0233 - accuracy: 0.9932 - val_loss: 0.6645 - val_accuracy: 0.8773
Epoch 74/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0484 - accuracy: 0.9844 - val_loss: 0.6972 - val_accuracy: 0.8723
Epoch 75/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0620 - accuracy: 0.9795 - val_loss: 0.4917 - val_accuracy: 0.9037
Epoch 76/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0423 - accuracy: 0.9869 - val_loss: 0.4771 - val_accuracy: 0.9100
Epoch 77/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0285 - accuracy: 0.9905 - val_loss: 0.5439 - val_accuracy: 0.8950
Epoch 78/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0575 - accuracy: 0.9823 - val_loss: 0.5170 - val_accuracy: 0.9020
Epoch 79/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0402 - accuracy: 0.9876 - val_loss: 0.4899 - val_accuracy: 0.8977
Epoch 80/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0439 - accuracy: 0.9854 - val_loss: 0.5185 - val_accuracy: 0.9017
Epoch 81/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0451 - accuracy: 0.9866 - val_loss: 0.4847 - val_accuracy: 0.9057
Epoch 82/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0185 - accuracy: 0.9944 - val_loss: 0.5461 - val_accuracy: 0.9030
Epoch 83/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0291 - accuracy: 0.9915 - val_loss: 0.5108 - val_accuracy: 0.9027
Epoch 84/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0328 - accuracy: 0.9887 - val_loss: 0.6029 - val_accuracy: 0.8947
Epoch 85/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0294 - accuracy: 0.9911 - val_loss: 0.7306 - val_accuracy: 0.8840
Epoch 86/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0476 - accuracy: 0.9849 - val_loss: 0.5686 - val_accuracy: 0.8903
Epoch 87/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0688 - accuracy: 0.9780 - val_loss: 0.5560 - val_accuracy: 0.8933
Epoch 88/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0466 - accuracy: 0.9859 - val_loss: 0.5159 - val_accuracy: 0.9013
Epoch 89/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0220 - accuracy: 0.9927 - val_loss: 0.5450 - val_accuracy: 0.8997
Epoch 90/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0305 - accuracy: 0.9905 - val_loss: 0.5277 - val_accuracy: 0.9050
Epoch 91/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0371 - accuracy: 0.9899 - val_loss: 0.4972 - val_accuracy: 0.9080
Epoch 92/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0306 - accuracy: 0.9897 - val_loss: 0.5118 - val_accuracy: 0.9077
Epoch 93/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0338 - accuracy: 0.9891 - val_loss: 0.5529 - val_accuracy: 0.8983
Epoch 94/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0382 - accuracy: 0.9887 - val_loss: 0.5242 - val_accuracy: 0.9057
Epoch 95/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0261 - accuracy: 0.9918 - val_loss: 0.6154 - val_accuracy: 0.8917
Epoch 96/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0230 - accuracy: 0.9919 - val_loss: 0.6109 - val_accuracy: 0.8990
Epoch 97/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0278 - accuracy: 0.9930 - val_loss: 0.5900 - val_accuracy: 0.8973
Epoch 98/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0365 - accuracy: 0.9897 - val_loss: 0.5166 - val_accuracy: 0.9053
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0267 - accuracy: 0.9919 - val_loss: 0.6032 - val_accuracy: 0.8963
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0259 - accuracy: 0.9924 - val_loss: 0.4976 - val_accuracy: 0.9043
94/94 [==============================] - 0s 4ms/step - loss: 0.4996 - accuracy: 0.9093
CNN Error: 9.07%

Global Average Pooling¶

In [91]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))


model.add(GlobalAveragePooling2D())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 13ms/step - loss: 2.5727 - accuracy: 0.1133 - val_loss: 2.5601 - val_accuracy: 0.0987
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.3683 - accuracy: 0.1739 - val_loss: 2.5317 - val_accuracy: 0.1503
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 2.2249 - accuracy: 0.2386 - val_loss: 2.1942 - val_accuracy: 0.2673
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0057 - accuracy: 0.3255 - val_loss: 2.0317 - val_accuracy: 0.2873
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 1.8126 - accuracy: 0.3959 - val_loss: 1.9239 - val_accuracy: 0.3480
Epoch 6/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6122 - accuracy: 0.4622 - val_loss: 1.5566 - val_accuracy: 0.4693
Epoch 7/100
71/71 [==============================] - 1s 10ms/step - loss: 1.4663 - accuracy: 0.5112 - val_loss: 1.4411 - val_accuracy: 0.5280
Epoch 8/100
71/71 [==============================] - 1s 10ms/step - loss: 1.3284 - accuracy: 0.5644 - val_loss: 1.2242 - val_accuracy: 0.5997
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1795 - accuracy: 0.6087 - val_loss: 1.1168 - val_accuracy: 0.6247
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0902 - accuracy: 0.6444 - val_loss: 1.0674 - val_accuracy: 0.6467
Epoch 11/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9902 - accuracy: 0.6794 - val_loss: 1.0023 - val_accuracy: 0.6723
Epoch 12/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9235 - accuracy: 0.6964 - val_loss: 0.8972 - val_accuracy: 0.7013
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8587 - accuracy: 0.7212 - val_loss: 0.8303 - val_accuracy: 0.7283
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8024 - accuracy: 0.7393 - val_loss: 0.8569 - val_accuracy: 0.7183
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7237 - accuracy: 0.7642 - val_loss: 0.8861 - val_accuracy: 0.7073
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6748 - accuracy: 0.7809 - val_loss: 0.7033 - val_accuracy: 0.7677
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6270 - accuracy: 0.7982 - val_loss: 0.6378 - val_accuracy: 0.7847
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5625 - accuracy: 0.8140 - val_loss: 0.8081 - val_accuracy: 0.7243
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5697 - accuracy: 0.8124 - val_loss: 0.6357 - val_accuracy: 0.7937
Epoch 20/100
71/71 [==============================] - 1s 9ms/step - loss: 0.5377 - accuracy: 0.8260 - val_loss: 0.6023 - val_accuracy: 0.8010
Epoch 21/100
71/71 [==============================] - 1s 9ms/step - loss: 0.4821 - accuracy: 0.8423 - val_loss: 0.5407 - val_accuracy: 0.8207
Epoch 22/100
71/71 [==============================] - 1s 9ms/step - loss: 0.4148 - accuracy: 0.8661 - val_loss: 0.5067 - val_accuracy: 0.8333
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3800 - accuracy: 0.8779 - val_loss: 0.4703 - val_accuracy: 0.8440
Epoch 24/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3633 - accuracy: 0.8800 - val_loss: 0.4988 - val_accuracy: 0.8337
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3816 - accuracy: 0.8744 - val_loss: 0.5042 - val_accuracy: 0.8333
Epoch 26/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3012 - accuracy: 0.9034 - val_loss: 0.4437 - val_accuracy: 0.8543
Epoch 27/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2783 - accuracy: 0.9101 - val_loss: 0.4332 - val_accuracy: 0.8593
Epoch 28/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2809 - accuracy: 0.9085 - val_loss: 0.4122 - val_accuracy: 0.8650
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2491 - accuracy: 0.9183 - val_loss: 0.4048 - val_accuracy: 0.8743
Epoch 30/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2407 - accuracy: 0.9232 - val_loss: 0.4886 - val_accuracy: 0.8443
Epoch 31/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2177 - accuracy: 0.9296 - val_loss: 0.3877 - val_accuracy: 0.8810
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2078 - accuracy: 0.9323 - val_loss: 0.4027 - val_accuracy: 0.8760
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1605 - accuracy: 0.9494 - val_loss: 0.4201 - val_accuracy: 0.8733
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1697 - accuracy: 0.9454 - val_loss: 0.4051 - val_accuracy: 0.8717
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1572 - accuracy: 0.9495 - val_loss: 0.4018 - val_accuracy: 0.8823
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1461 - accuracy: 0.9536 - val_loss: 0.4161 - val_accuracy: 0.8763
Epoch 37/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1481 - accuracy: 0.9509 - val_loss: 0.4155 - val_accuracy: 0.8780
Epoch 38/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1289 - accuracy: 0.9600 - val_loss: 0.3643 - val_accuracy: 0.8943
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1338 - accuracy: 0.9556 - val_loss: 0.6029 - val_accuracy: 0.8483
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1629 - accuracy: 0.9459 - val_loss: 0.4850 - val_accuracy: 0.8600
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1105 - accuracy: 0.9660 - val_loss: 0.3683 - val_accuracy: 0.8937
Epoch 42/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0839 - accuracy: 0.9726 - val_loss: 0.4113 - val_accuracy: 0.8887
Epoch 43/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1311 - accuracy: 0.9574 - val_loss: 0.4489 - val_accuracy: 0.8770
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1095 - accuracy: 0.9641 - val_loss: 0.4004 - val_accuracy: 0.8863
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1049 - accuracy: 0.9658 - val_loss: 0.3921 - val_accuracy: 0.8890
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0851 - accuracy: 0.9714 - val_loss: 0.3956 - val_accuracy: 0.8963
Epoch 47/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0688 - accuracy: 0.9783 - val_loss: 0.3852 - val_accuracy: 0.8947
Epoch 48/100
71/71 [==============================] - 1s 11ms/step - loss: 0.0636 - accuracy: 0.9790 - val_loss: 0.3796 - val_accuracy: 0.8990
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0562 - accuracy: 0.9828 - val_loss: 0.4066 - val_accuracy: 0.8990
Epoch 50/100
71/71 [==============================] - 1s 11ms/step - loss: 0.0584 - accuracy: 0.9822 - val_loss: 0.4110 - val_accuracy: 0.9007
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0618 - accuracy: 0.9800 - val_loss: 0.3919 - val_accuracy: 0.9037
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0533 - accuracy: 0.9833 - val_loss: 0.4415 - val_accuracy: 0.8970
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1083 - accuracy: 0.9634 - val_loss: 0.4063 - val_accuracy: 0.8907
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0638 - accuracy: 0.9786 - val_loss: 0.3673 - val_accuracy: 0.9103
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0549 - accuracy: 0.9825 - val_loss: 0.4428 - val_accuracy: 0.8893
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1112 - accuracy: 0.9654 - val_loss: 0.4061 - val_accuracy: 0.8960
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0373 - accuracy: 0.9903 - val_loss: 0.3920 - val_accuracy: 0.9027
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0459 - accuracy: 0.9844 - val_loss: 0.4146 - val_accuracy: 0.9047
Epoch 59/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0385 - accuracy: 0.9874 - val_loss: 0.3997 - val_accuracy: 0.9043
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0430 - accuracy: 0.9867 - val_loss: 0.4771 - val_accuracy: 0.8887
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0731 - accuracy: 0.9743 - val_loss: 0.4181 - val_accuracy: 0.8987
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0414 - accuracy: 0.9864 - val_loss: 0.4131 - val_accuracy: 0.9023
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0501 - accuracy: 0.9839 - val_loss: 0.4700 - val_accuracy: 0.8907
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0647 - accuracy: 0.9787 - val_loss: 0.4797 - val_accuracy: 0.8823
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0479 - accuracy: 0.9828 - val_loss: 0.3772 - val_accuracy: 0.9037
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0496 - accuracy: 0.9837 - val_loss: 0.3887 - val_accuracy: 0.9067
Epoch 67/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0265 - accuracy: 0.9920 - val_loss: 0.3867 - val_accuracy: 0.9070
Epoch 68/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0476 - accuracy: 0.9844 - val_loss: 0.4285 - val_accuracy: 0.9047
Epoch 69/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0349 - accuracy: 0.9886 - val_loss: 0.4436 - val_accuracy: 0.9030
Epoch 70/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0263 - accuracy: 0.9925 - val_loss: 0.4303 - val_accuracy: 0.8990
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0402 - accuracy: 0.9872 - val_loss: 0.4145 - val_accuracy: 0.9030
Epoch 72/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0548 - accuracy: 0.9825 - val_loss: 0.3914 - val_accuracy: 0.8980
Epoch 73/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0254 - accuracy: 0.9911 - val_loss: 0.4522 - val_accuracy: 0.9027
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0325 - accuracy: 0.9897 - val_loss: 0.3617 - val_accuracy: 0.9130
Epoch 75/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0265 - accuracy: 0.9910 - val_loss: 0.4989 - val_accuracy: 0.8940
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0585 - accuracy: 0.9822 - val_loss: 0.4037 - val_accuracy: 0.9057
Epoch 77/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0482 - accuracy: 0.9852 - val_loss: 0.4623 - val_accuracy: 0.8890
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0267 - accuracy: 0.9919 - val_loss: 0.3574 - val_accuracy: 0.9200
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0523 - accuracy: 0.9843 - val_loss: 0.3885 - val_accuracy: 0.9080
Epoch 80/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0544 - accuracy: 0.9814 - val_loss: 0.3802 - val_accuracy: 0.9107
Epoch 81/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0268 - accuracy: 0.9915 - val_loss: 0.3718 - val_accuracy: 0.9190
Epoch 82/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0217 - accuracy: 0.9940 - val_loss: 0.4182 - val_accuracy: 0.9117
Epoch 83/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0156 - accuracy: 0.9948 - val_loss: 0.4445 - val_accuracy: 0.9083
Epoch 84/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0349 - accuracy: 0.9877 - val_loss: 0.3846 - val_accuracy: 0.9140
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0242 - accuracy: 0.9940 - val_loss: 0.3942 - val_accuracy: 0.9077
Epoch 86/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0277 - accuracy: 0.9912 - val_loss: 0.4164 - val_accuracy: 0.9090
Epoch 87/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0428 - accuracy: 0.9858 - val_loss: 0.4470 - val_accuracy: 0.8970
Epoch 88/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0196 - accuracy: 0.9940 - val_loss: 0.3850 - val_accuracy: 0.9240
Epoch 89/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0277 - accuracy: 0.9917 - val_loss: 0.4661 - val_accuracy: 0.9053
Epoch 90/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0248 - accuracy: 0.9924 - val_loss: 0.5707 - val_accuracy: 0.8800
Epoch 91/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0616 - accuracy: 0.9795 - val_loss: 0.4678 - val_accuracy: 0.9040
Epoch 92/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0237 - accuracy: 0.9927 - val_loss: 0.4216 - val_accuracy: 0.9063
Epoch 93/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0193 - accuracy: 0.9937 - val_loss: 0.3947 - val_accuracy: 0.9163
Epoch 94/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0221 - accuracy: 0.9929 - val_loss: 0.6629 - val_accuracy: 0.8723
Epoch 95/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0460 - accuracy: 0.9852 - val_loss: 0.4614 - val_accuracy: 0.9043
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0201 - accuracy: 0.9935 - val_loss: 0.4845 - val_accuracy: 0.9060
Epoch 97/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0234 - accuracy: 0.9931 - val_loss: 0.6024 - val_accuracy: 0.8967
Epoch 98/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0174 - accuracy: 0.9950 - val_loss: 0.4323 - val_accuracy: 0.9093
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0118 - accuracy: 0.9967 - val_loss: 0.6201 - val_accuracy: 0.8863
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0369 - accuracy: 0.9870 - val_loss: 0.5686 - val_accuracy: 0.8803
94/94 [==============================] - 0s 3ms/step - loss: 0.5276 - accuracy: 0.8843
CNN Error: 11.57%

It can be seen that the model is performing better with Flatten. Hence we will use Flatten instead of GlobalAveragePooling¶

The model is overfitting hence we will now explore options (Kernal Regularizer and Dropout) to mitigate this issue.¶

Dropout was introduced to assess whether it has a positive impact on curbing the overfitting issue.¶

In [92]:
# Model 2
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)
model.save_weights("./CNN Weights (31 by 31)/model2.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 13ms/step - loss: 2.6128 - accuracy: 0.1049 - val_loss: 2.6860 - val_accuracy: 0.0830
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4505 - accuracy: 0.1496 - val_loss: 2.4580 - val_accuracy: 0.1843
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 2.2909 - accuracy: 0.2119 - val_loss: 2.2156 - val_accuracy: 0.2617
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0178 - accuracy: 0.3309 - val_loss: 1.8818 - val_accuracy: 0.3957
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7980 - accuracy: 0.4023 - val_loss: 1.6759 - val_accuracy: 0.4537
Epoch 6/100
71/71 [==============================] - 1s 11ms/step - loss: 1.5902 - accuracy: 0.4735 - val_loss: 1.4320 - val_accuracy: 0.5333
Epoch 7/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4324 - accuracy: 0.5274 - val_loss: 1.2522 - val_accuracy: 0.6043
Epoch 8/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2794 - accuracy: 0.5835 - val_loss: 1.0932 - val_accuracy: 0.6590
Epoch 9/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1820 - accuracy: 0.6179 - val_loss: 1.0650 - val_accuracy: 0.6693
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1185 - accuracy: 0.6310 - val_loss: 0.9088 - val_accuracy: 0.7100
Epoch 11/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0356 - accuracy: 0.6627 - val_loss: 0.9029 - val_accuracy: 0.7093
Epoch 12/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9674 - accuracy: 0.6843 - val_loss: 0.8113 - val_accuracy: 0.7400
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8991 - accuracy: 0.7075 - val_loss: 0.7396 - val_accuracy: 0.7557
Epoch 14/100
71/71 [==============================] - 1s 11ms/step - loss: 0.8160 - accuracy: 0.7377 - val_loss: 0.6937 - val_accuracy: 0.7720
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7544 - accuracy: 0.7589 - val_loss: 0.6330 - val_accuracy: 0.7933
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7057 - accuracy: 0.7749 - val_loss: 0.6405 - val_accuracy: 0.7870
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6769 - accuracy: 0.7816 - val_loss: 0.6143 - val_accuracy: 0.8043
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6169 - accuracy: 0.8001 - val_loss: 0.5223 - val_accuracy: 0.8280
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5773 - accuracy: 0.8140 - val_loss: 0.4988 - val_accuracy: 0.8350
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5671 - accuracy: 0.8146 - val_loss: 0.4716 - val_accuracy: 0.8500
Epoch 21/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5154 - accuracy: 0.8324 - val_loss: 0.4680 - val_accuracy: 0.8540
Epoch 22/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5492 - accuracy: 0.8257 - val_loss: 0.4248 - val_accuracy: 0.8687
Epoch 23/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4633 - accuracy: 0.8545 - val_loss: 0.4488 - val_accuracy: 0.8587
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4661 - accuracy: 0.8505 - val_loss: 0.3841 - val_accuracy: 0.8807
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4506 - accuracy: 0.8510 - val_loss: 0.3787 - val_accuracy: 0.8847
Epoch 26/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4040 - accuracy: 0.8677 - val_loss: 0.4119 - val_accuracy: 0.8773
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4058 - accuracy: 0.8730 - val_loss: 0.3697 - val_accuracy: 0.8797
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3599 - accuracy: 0.8815 - val_loss: 0.3772 - val_accuracy: 0.8853
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3791 - accuracy: 0.8739 - val_loss: 0.3184 - val_accuracy: 0.9020
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3425 - accuracy: 0.8920 - val_loss: 0.3935 - val_accuracy: 0.8727
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3292 - accuracy: 0.8898 - val_loss: 0.3137 - val_accuracy: 0.9000
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3257 - accuracy: 0.8931 - val_loss: 0.3378 - val_accuracy: 0.8933
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3240 - accuracy: 0.8963 - val_loss: 0.3140 - val_accuracy: 0.9037
Epoch 34/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2991 - accuracy: 0.9029 - val_loss: 0.3032 - val_accuracy: 0.9130
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2926 - accuracy: 0.9060 - val_loss: 0.2920 - val_accuracy: 0.9090
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2770 - accuracy: 0.9103 - val_loss: 0.3357 - val_accuracy: 0.8973
Epoch 37/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2877 - accuracy: 0.9055 - val_loss: 0.3074 - val_accuracy: 0.9140
Epoch 38/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2670 - accuracy: 0.9116 - val_loss: 0.2753 - val_accuracy: 0.9140
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2505 - accuracy: 0.9189 - val_loss: 0.2605 - val_accuracy: 0.9160
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2479 - accuracy: 0.9179 - val_loss: 0.2608 - val_accuracy: 0.9207
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2510 - accuracy: 0.9217 - val_loss: 0.2709 - val_accuracy: 0.9183
Epoch 42/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2277 - accuracy: 0.9249 - val_loss: 0.2557 - val_accuracy: 0.9257
Epoch 43/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2116 - accuracy: 0.9314 - val_loss: 0.2757 - val_accuracy: 0.9183
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2135 - accuracy: 0.9315 - val_loss: 0.2667 - val_accuracy: 0.9180
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2076 - accuracy: 0.9287 - val_loss: 0.2818 - val_accuracy: 0.9147
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2179 - accuracy: 0.9274 - val_loss: 0.2543 - val_accuracy: 0.9213
Epoch 47/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2228 - accuracy: 0.9290 - val_loss: 0.2513 - val_accuracy: 0.9257
Epoch 48/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2003 - accuracy: 0.9358 - val_loss: 0.2567 - val_accuracy: 0.9223
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1958 - accuracy: 0.9343 - val_loss: 0.2469 - val_accuracy: 0.9267
Epoch 50/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1971 - accuracy: 0.9352 - val_loss: 0.2459 - val_accuracy: 0.9290
Epoch 51/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1920 - accuracy: 0.9413 - val_loss: 0.2469 - val_accuracy: 0.9297
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1765 - accuracy: 0.9425 - val_loss: 0.2852 - val_accuracy: 0.9220
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1648 - accuracy: 0.9485 - val_loss: 0.2754 - val_accuracy: 0.9227
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1608 - accuracy: 0.9467 - val_loss: 0.2652 - val_accuracy: 0.9277
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2373 - accuracy: 0.9238 - val_loss: 0.2433 - val_accuracy: 0.9303
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1627 - accuracy: 0.9507 - val_loss: 0.2478 - val_accuracy: 0.9300
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1821 - accuracy: 0.9403 - val_loss: 0.2459 - val_accuracy: 0.9323
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2045 - accuracy: 0.9366 - val_loss: 0.3150 - val_accuracy: 0.9040
Epoch 59/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1736 - accuracy: 0.9469 - val_loss: 0.2520 - val_accuracy: 0.9290
Epoch 60/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1649 - accuracy: 0.9474 - val_loss: 0.2630 - val_accuracy: 0.9283
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1495 - accuracy: 0.9508 - val_loss: 0.2455 - val_accuracy: 0.9293
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1542 - accuracy: 0.9495 - val_loss: 0.2590 - val_accuracy: 0.9287
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1431 - accuracy: 0.9539 - val_loss: 0.2571 - val_accuracy: 0.9313
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1425 - accuracy: 0.9535 - val_loss: 0.2563 - val_accuracy: 0.9303
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1484 - accuracy: 0.9528 - val_loss: 0.2418 - val_accuracy: 0.9360
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1434 - accuracy: 0.9537 - val_loss: 0.2743 - val_accuracy: 0.9250
Epoch 67/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1279 - accuracy: 0.9584 - val_loss: 0.2575 - val_accuracy: 0.9313
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1594 - accuracy: 0.9485 - val_loss: 0.2656 - val_accuracy: 0.9293
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1270 - accuracy: 0.9595 - val_loss: 0.2605 - val_accuracy: 0.9330
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1458 - accuracy: 0.9555 - val_loss: 0.2572 - val_accuracy: 0.9333
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1313 - accuracy: 0.9581 - val_loss: 0.2337 - val_accuracy: 0.9343
Epoch 72/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1335 - accuracy: 0.9587 - val_loss: 0.3296 - val_accuracy: 0.9143
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1307 - accuracy: 0.9584 - val_loss: 0.2508 - val_accuracy: 0.9310
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1180 - accuracy: 0.9640 - val_loss: 0.2857 - val_accuracy: 0.9273
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1266 - accuracy: 0.9599 - val_loss: 0.2413 - val_accuracy: 0.9347
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1141 - accuracy: 0.9634 - val_loss: 0.2506 - val_accuracy: 0.9313
Epoch 77/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1173 - accuracy: 0.9615 - val_loss: 0.2706 - val_accuracy: 0.9287
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1415 - accuracy: 0.9546 - val_loss: 0.2576 - val_accuracy: 0.9340
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1197 - accuracy: 0.9629 - val_loss: 0.2579 - val_accuracy: 0.9363
Epoch 80/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1230 - accuracy: 0.9603 - val_loss: 0.2706 - val_accuracy: 0.9323
Epoch 81/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1017 - accuracy: 0.9678 - val_loss: 0.2336 - val_accuracy: 0.9380
Epoch 82/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1053 - accuracy: 0.9663 - val_loss: 0.2378 - val_accuracy: 0.9357
Epoch 83/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1349 - accuracy: 0.9579 - val_loss: 0.2603 - val_accuracy: 0.9307
Epoch 84/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1328 - accuracy: 0.9575 - val_loss: 0.2449 - val_accuracy: 0.9357
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1047 - accuracy: 0.9677 - val_loss: 0.2429 - val_accuracy: 0.9377
Epoch 86/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0999 - accuracy: 0.9689 - val_loss: 0.2405 - val_accuracy: 0.9407
Epoch 87/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1093 - accuracy: 0.9644 - val_loss: 0.2603 - val_accuracy: 0.9350
Epoch 88/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1139 - accuracy: 0.9650 - val_loss: 0.2339 - val_accuracy: 0.9397
Epoch 89/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1022 - accuracy: 0.9661 - val_loss: 0.2449 - val_accuracy: 0.9417
Epoch 90/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1065 - accuracy: 0.9673 - val_loss: 0.2410 - val_accuracy: 0.9380
Epoch 91/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1024 - accuracy: 0.9663 - val_loss: 0.3430 - val_accuracy: 0.9110
Epoch 92/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1294 - accuracy: 0.9605 - val_loss: 0.2636 - val_accuracy: 0.9343
Epoch 93/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1018 - accuracy: 0.9674 - val_loss: 0.2629 - val_accuracy: 0.9330
Epoch 94/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0995 - accuracy: 0.9699 - val_loss: 0.2595 - val_accuracy: 0.9360
Epoch 95/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0992 - accuracy: 0.9689 - val_loss: 0.2472 - val_accuracy: 0.9400
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1240 - accuracy: 0.9602 - val_loss: 0.2566 - val_accuracy: 0.9347
Epoch 97/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0958 - accuracy: 0.9679 - val_loss: 0.2544 - val_accuracy: 0.9370
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.0971 - accuracy: 0.9709 - val_loss: 0.2619 - val_accuracy: 0.9327
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1003 - accuracy: 0.9692 - val_loss: 0.2625 - val_accuracy: 0.9383
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1086 - accuracy: 0.9684 - val_loss: 0.2634 - val_accuracy: 0.9370
94/94 [==============================] - 0s 4ms/step - loss: 0.2367 - accuracy: 0.9367
CNN Error: 6.33%
In [93]:
model.summary()
Model: "sequential_29"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d_81 (Conv2D)          (None, 29, 29, 64)        640       
                                                                 
 max_pooling2d_75 (MaxPoolin  (None, 14, 14, 64)       0         
 g2D)                                                            
                                                                 
 dropout_73 (Dropout)        (None, 14, 14, 64)        0         
                                                                 
 conv2d_82 (Conv2D)          (None, 12, 12, 128)       73856     
                                                                 
 max_pooling2d_76 (MaxPoolin  (None, 6, 6, 128)        0         
 g2D)                                                            
                                                                 
 dropout_74 (Dropout)        (None, 6, 6, 128)         0         
                                                                 
 conv2d_83 (Conv2D)          (None, 4, 4, 256)         295168    
                                                                 
 max_pooling2d_77 (MaxPoolin  (None, 2, 2, 256)        0         
 g2D)                                                            
                                                                 
 dropout_75 (Dropout)        (None, 2, 2, 256)         0         
                                                                 
 flatten_23 (Flatten)        (None, 1024)              0         
                                                                 
 dense_72 (Dense)            (None, 512)               524800    
                                                                 
 dropout_76 (Dropout)        (None, 512)               0         
                                                                 
 dense_73 (Dense)            (None, 256)               131328    
                                                                 
 dropout_77 (Dropout)        (None, 256)               0         
                                                                 
 dense_74 (Dense)            (None, 15)                3855      
                                                                 
=================================================================
Total params: 1,029,647
Trainable params: 1,029,647
Non-trainable params: 0
_________________________________________________________________

Load Model 2¶

In [94]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.load_weights("./CNN Weights (31 by 31)/model2.h5")

After incorporating dropout to my layers, there is an increase in both the train and validation accuracy sugesting a positive impact. I will now experiment with different dropout values to determine the optimal value.¶

Model 3 (31 x 31)¶

Model 3 will be a deeper model with stacked layers¶

In [95]:
# Model 3
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 18ms/step - loss: 2.6207 - accuracy: 0.0944 - val_loss: 2.6193 - val_accuracy: 0.0917
Epoch 2/100
71/71 [==============================] - 1s 15ms/step - loss: 2.4700 - accuracy: 0.1455 - val_loss: 2.4935 - val_accuracy: 0.1490
Epoch 3/100
71/71 [==============================] - 1s 15ms/step - loss: 2.2904 - accuracy: 0.2118 - val_loss: 2.1756 - val_accuracy: 0.2997
Epoch 4/100
71/71 [==============================] - 1s 15ms/step - loss: 2.0616 - accuracy: 0.3115 - val_loss: 1.9531 - val_accuracy: 0.3847
Epoch 5/100
71/71 [==============================] - 1s 15ms/step - loss: 1.8308 - accuracy: 0.3989 - val_loss: 1.6051 - val_accuracy: 0.4760
Epoch 6/100
71/71 [==============================] - 1s 15ms/step - loss: 1.6224 - accuracy: 0.4739 - val_loss: 1.5053 - val_accuracy: 0.4833
Epoch 7/100
71/71 [==============================] - 1s 15ms/step - loss: 1.4859 - accuracy: 0.5130 - val_loss: 1.4160 - val_accuracy: 0.5277
Epoch 8/100
71/71 [==============================] - 1s 15ms/step - loss: 1.3399 - accuracy: 0.5614 - val_loss: 1.1664 - val_accuracy: 0.6367
Epoch 9/100
71/71 [==============================] - 1s 16ms/step - loss: 1.2327 - accuracy: 0.5974 - val_loss: 1.1901 - val_accuracy: 0.6100
Epoch 10/100
71/71 [==============================] - 1s 16ms/step - loss: 1.0850 - accuracy: 0.6469 - val_loss: 0.9677 - val_accuracy: 0.6987
Epoch 11/100
71/71 [==============================] - 1s 15ms/step - loss: 1.0188 - accuracy: 0.6689 - val_loss: 0.9635 - val_accuracy: 0.6923
Epoch 12/100
71/71 [==============================] - 1s 15ms/step - loss: 0.9385 - accuracy: 0.7005 - val_loss: 0.9326 - val_accuracy: 0.6993
Epoch 13/100
71/71 [==============================] - 1s 15ms/step - loss: 0.8432 - accuracy: 0.7325 - val_loss: 0.7800 - val_accuracy: 0.7443
Epoch 14/100
71/71 [==============================] - 1s 15ms/step - loss: 0.7854 - accuracy: 0.7427 - val_loss: 0.8441 - val_accuracy: 0.7247
Epoch 15/100
71/71 [==============================] - 1s 15ms/step - loss: 0.7389 - accuracy: 0.7632 - val_loss: 0.7713 - val_accuracy: 0.7563
Epoch 16/100
71/71 [==============================] - 1s 16ms/step - loss: 0.6444 - accuracy: 0.7904 - val_loss: 0.6669 - val_accuracy: 0.7830
Epoch 17/100
71/71 [==============================] - 1s 15ms/step - loss: 0.6340 - accuracy: 0.7986 - val_loss: 0.6499 - val_accuracy: 0.7947
Epoch 18/100
71/71 [==============================] - 1s 15ms/step - loss: 0.5532 - accuracy: 0.8221 - val_loss: 0.6835 - val_accuracy: 0.7883
Epoch 19/100
71/71 [==============================] - 1s 16ms/step - loss: 0.5203 - accuracy: 0.8323 - val_loss: 0.7141 - val_accuracy: 0.7800
Epoch 20/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4937 - accuracy: 0.8434 - val_loss: 0.6926 - val_accuracy: 0.7920
Epoch 21/100
71/71 [==============================] - 1s 16ms/step - loss: 0.4467 - accuracy: 0.8554 - val_loss: 0.5955 - val_accuracy: 0.8150
Epoch 22/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4244 - accuracy: 0.8623 - val_loss: 0.6027 - val_accuracy: 0.8273
Epoch 23/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3654 - accuracy: 0.8799 - val_loss: 0.6912 - val_accuracy: 0.8070
Epoch 24/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3767 - accuracy: 0.8784 - val_loss: 0.6309 - val_accuracy: 0.8243
Epoch 25/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3771 - accuracy: 0.8793 - val_loss: 0.5412 - val_accuracy: 0.8473
Epoch 26/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3258 - accuracy: 0.8928 - val_loss: 0.5587 - val_accuracy: 0.8377
Epoch 27/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2920 - accuracy: 0.9046 - val_loss: 0.6032 - val_accuracy: 0.8373
Epoch 28/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2889 - accuracy: 0.9010 - val_loss: 0.5221 - val_accuracy: 0.8580
Epoch 29/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2728 - accuracy: 0.9139 - val_loss: 0.5533 - val_accuracy: 0.8513
Epoch 30/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2420 - accuracy: 0.9206 - val_loss: 0.5384 - val_accuracy: 0.8647
Epoch 31/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2492 - accuracy: 0.9185 - val_loss: 0.5712 - val_accuracy: 0.8520
Epoch 32/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2446 - accuracy: 0.9214 - val_loss: 0.5303 - val_accuracy: 0.8637
Epoch 33/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2260 - accuracy: 0.9261 - val_loss: 0.5558 - val_accuracy: 0.8597
Epoch 34/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2088 - accuracy: 0.9309 - val_loss: 0.5287 - val_accuracy: 0.8590
Epoch 35/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1894 - accuracy: 0.9369 - val_loss: 0.7007 - val_accuracy: 0.8470
Epoch 36/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1998 - accuracy: 0.9351 - val_loss: 0.6065 - val_accuracy: 0.8503
Epoch 37/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1990 - accuracy: 0.9344 - val_loss: 0.5400 - val_accuracy: 0.8660
Epoch 38/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1751 - accuracy: 0.9417 - val_loss: 0.5392 - val_accuracy: 0.8687
Epoch 39/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1724 - accuracy: 0.9457 - val_loss: 0.5620 - val_accuracy: 0.8653
Epoch 40/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1460 - accuracy: 0.9536 - val_loss: 0.6927 - val_accuracy: 0.8357
Epoch 41/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1528 - accuracy: 0.9512 - val_loss: 0.5281 - val_accuracy: 0.8697
Epoch 42/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1712 - accuracy: 0.9477 - val_loss: 0.5632 - val_accuracy: 0.8597
Epoch 43/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1598 - accuracy: 0.9479 - val_loss: 0.5422 - val_accuracy: 0.8743
Epoch 44/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1459 - accuracy: 0.9524 - val_loss: 0.6429 - val_accuracy: 0.8597
Epoch 45/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1439 - accuracy: 0.9536 - val_loss: 0.5584 - val_accuracy: 0.8717
Epoch 46/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1445 - accuracy: 0.9512 - val_loss: 0.5071 - val_accuracy: 0.8817
Epoch 47/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1210 - accuracy: 0.9572 - val_loss: 0.5754 - val_accuracy: 0.8753
Epoch 48/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1319 - accuracy: 0.9588 - val_loss: 0.5561 - val_accuracy: 0.8780
Epoch 49/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1196 - accuracy: 0.9609 - val_loss: 0.5892 - val_accuracy: 0.8677
Epoch 50/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1451 - accuracy: 0.9527 - val_loss: 0.5465 - val_accuracy: 0.8727
Epoch 51/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1247 - accuracy: 0.9567 - val_loss: 0.5240 - val_accuracy: 0.8740
Epoch 52/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1311 - accuracy: 0.9591 - val_loss: 0.6015 - val_accuracy: 0.8690
Epoch 53/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1304 - accuracy: 0.9606 - val_loss: 0.5315 - val_accuracy: 0.8797
Epoch 54/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1184 - accuracy: 0.9633 - val_loss: 0.5961 - val_accuracy: 0.8790
Epoch 55/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1465 - accuracy: 0.9549 - val_loss: 0.6502 - val_accuracy: 0.8570
Epoch 56/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1103 - accuracy: 0.9633 - val_loss: 0.5267 - val_accuracy: 0.8830
Epoch 57/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1045 - accuracy: 0.9687 - val_loss: 0.6105 - val_accuracy: 0.8730
Epoch 58/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0984 - accuracy: 0.9679 - val_loss: 0.5444 - val_accuracy: 0.8817
Epoch 59/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0949 - accuracy: 0.9694 - val_loss: 0.5695 - val_accuracy: 0.8823
Epoch 60/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0937 - accuracy: 0.9689 - val_loss: 0.5969 - val_accuracy: 0.8797
Epoch 61/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0984 - accuracy: 0.9703 - val_loss: 0.6164 - val_accuracy: 0.8687
Epoch 62/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0868 - accuracy: 0.9740 - val_loss: 0.7657 - val_accuracy: 0.8493
Epoch 63/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1126 - accuracy: 0.9630 - val_loss: 0.6601 - val_accuracy: 0.8573
Epoch 64/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1170 - accuracy: 0.9633 - val_loss: 0.6496 - val_accuracy: 0.8717
Epoch 65/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1197 - accuracy: 0.9644 - val_loss: 0.5359 - val_accuracy: 0.8840
Epoch 66/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0923 - accuracy: 0.9696 - val_loss: 0.7889 - val_accuracy: 0.8583
Epoch 67/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0919 - accuracy: 0.9696 - val_loss: 0.5266 - val_accuracy: 0.8923
Epoch 68/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0826 - accuracy: 0.9756 - val_loss: 0.6007 - val_accuracy: 0.8833
Epoch 69/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1109 - accuracy: 0.9671 - val_loss: 0.5746 - val_accuracy: 0.8657
Epoch 70/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0994 - accuracy: 0.9684 - val_loss: 0.5382 - val_accuracy: 0.8890
Epoch 71/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0724 - accuracy: 0.9768 - val_loss: 0.6239 - val_accuracy: 0.8753
Epoch 72/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0880 - accuracy: 0.9735 - val_loss: 0.6119 - val_accuracy: 0.8747
Epoch 73/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0909 - accuracy: 0.9704 - val_loss: 0.5962 - val_accuracy: 0.8777
Epoch 74/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0807 - accuracy: 0.9732 - val_loss: 0.6621 - val_accuracy: 0.8747
Epoch 75/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0734 - accuracy: 0.9790 - val_loss: 0.5978 - val_accuracy: 0.8853
Epoch 76/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0751 - accuracy: 0.9757 - val_loss: 0.6992 - val_accuracy: 0.8733
Epoch 77/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0798 - accuracy: 0.9739 - val_loss: 0.7603 - val_accuracy: 0.8603
Epoch 78/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0550 - accuracy: 0.9826 - val_loss: 0.6061 - val_accuracy: 0.8827
Epoch 79/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0681 - accuracy: 0.9787 - val_loss: 0.8334 - val_accuracy: 0.8607
Epoch 80/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0846 - accuracy: 0.9715 - val_loss: 0.6781 - val_accuracy: 0.8603
Epoch 81/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1089 - accuracy: 0.9689 - val_loss: 0.5413 - val_accuracy: 0.8797
Epoch 82/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0635 - accuracy: 0.9800 - val_loss: 0.7710 - val_accuracy: 0.8733
Epoch 83/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0507 - accuracy: 0.9829 - val_loss: 0.6330 - val_accuracy: 0.8870
Epoch 84/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0876 - accuracy: 0.9739 - val_loss: 0.5657 - val_accuracy: 0.8743
Epoch 85/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0762 - accuracy: 0.9760 - val_loss: 0.6424 - val_accuracy: 0.8820
Epoch 86/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1577 - accuracy: 0.9557 - val_loss: 0.5863 - val_accuracy: 0.8590
Epoch 87/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0660 - accuracy: 0.9794 - val_loss: 0.5485 - val_accuracy: 0.8890
Epoch 88/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0726 - accuracy: 0.9774 - val_loss: 0.5885 - val_accuracy: 0.8850
Epoch 89/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0557 - accuracy: 0.9812 - val_loss: 0.6670 - val_accuracy: 0.8857
Epoch 90/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0579 - accuracy: 0.9833 - val_loss: 0.6483 - val_accuracy: 0.8847
Epoch 91/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0593 - accuracy: 0.9805 - val_loss: 0.8121 - val_accuracy: 0.8630
Epoch 92/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0560 - accuracy: 0.9827 - val_loss: 0.7754 - val_accuracy: 0.8800
Epoch 93/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0635 - accuracy: 0.9790 - val_loss: 0.6341 - val_accuracy: 0.8833
Epoch 94/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0579 - accuracy: 0.9821 - val_loss: 0.6851 - val_accuracy: 0.8790
Epoch 95/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0558 - accuracy: 0.9832 - val_loss: 0.5281 - val_accuracy: 0.8967
Epoch 96/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0691 - accuracy: 0.9783 - val_loss: 0.6994 - val_accuracy: 0.8733
Epoch 97/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0787 - accuracy: 0.9763 - val_loss: 0.6634 - val_accuracy: 0.8847
Epoch 98/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0573 - accuracy: 0.9824 - val_loss: 0.6206 - val_accuracy: 0.8850
Epoch 99/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0741 - accuracy: 0.9760 - val_loss: 0.6079 - val_accuracy: 0.8827
Epoch 100/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0400 - accuracy: 0.9873 - val_loss: 0.6240 - val_accuracy: 0.8873
94/94 [==============================] - 0s 4ms/step - loss: 0.6003 - accuracy: 0.8913
CNN Error: 10.87%

It can be seen that the model is overfitting. The model is performing very well on train data but its validation loss is increasing.
Hence, we will incorporate dropout into our layer to curb overfitting.

In [96]:
# Model 3
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)
model.save_weights("./CNN Weights (31 by 31)/model3.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 19ms/step - loss: 2.6320 - accuracy: 0.0940 - val_loss: 2.6084 - val_accuracy: 0.0873
Epoch 2/100
71/71 [==============================] - 1s 16ms/step - loss: 2.4762 - accuracy: 0.1469 - val_loss: 2.3811 - val_accuracy: 0.2037
Epoch 3/100
71/71 [==============================] - 1s 16ms/step - loss: 2.2667 - accuracy: 0.2335 - val_loss: 2.1768 - val_accuracy: 0.2717
Epoch 4/100
71/71 [==============================] - 1s 15ms/step - loss: 2.0840 - accuracy: 0.3070 - val_loss: 1.9407 - val_accuracy: 0.3510
Epoch 5/100
71/71 [==============================] - 1s 16ms/step - loss: 1.8628 - accuracy: 0.3842 - val_loss: 1.7501 - val_accuracy: 0.4310
Epoch 6/100
71/71 [==============================] - 1s 16ms/step - loss: 1.6890 - accuracy: 0.4438 - val_loss: 1.4952 - val_accuracy: 0.5113
Epoch 7/100
71/71 [==============================] - 1s 16ms/step - loss: 1.5292 - accuracy: 0.4992 - val_loss: 1.3468 - val_accuracy: 0.5513
Epoch 8/100
71/71 [==============================] - 1s 16ms/step - loss: 1.3698 - accuracy: 0.5428 - val_loss: 1.3029 - val_accuracy: 0.5757
Epoch 9/100
71/71 [==============================] - 1s 16ms/step - loss: 1.2473 - accuracy: 0.5912 - val_loss: 1.1597 - val_accuracy: 0.6370
Epoch 10/100
71/71 [==============================] - 1s 16ms/step - loss: 1.1916 - accuracy: 0.6162 - val_loss: 1.1134 - val_accuracy: 0.6360
Epoch 11/100
71/71 [==============================] - 1s 16ms/step - loss: 1.1035 - accuracy: 0.6470 - val_loss: 0.9552 - val_accuracy: 0.6900
Epoch 12/100
71/71 [==============================] - 1s 17ms/step - loss: 1.0496 - accuracy: 0.6642 - val_loss: 0.9029 - val_accuracy: 0.7167
Epoch 13/100
71/71 [==============================] - 1s 16ms/step - loss: 0.9649 - accuracy: 0.6884 - val_loss: 0.9112 - val_accuracy: 0.7080
Epoch 14/100
71/71 [==============================] - 1s 16ms/step - loss: 0.8632 - accuracy: 0.7234 - val_loss: 0.8879 - val_accuracy: 0.7247
Epoch 15/100
71/71 [==============================] - 1s 16ms/step - loss: 0.8307 - accuracy: 0.7315 - val_loss: 0.7340 - val_accuracy: 0.7740
Epoch 16/100
71/71 [==============================] - 1s 16ms/step - loss: 0.7388 - accuracy: 0.7627 - val_loss: 0.7287 - val_accuracy: 0.7630
Epoch 17/100
71/71 [==============================] - 1s 16ms/step - loss: 0.7038 - accuracy: 0.7780 - val_loss: 0.6743 - val_accuracy: 0.7863
Epoch 18/100
71/71 [==============================] - 1s 15ms/step - loss: 0.6710 - accuracy: 0.7880 - val_loss: 0.6510 - val_accuracy: 0.8017
Epoch 19/100
71/71 [==============================] - 1s 15ms/step - loss: 0.6324 - accuracy: 0.7991 - val_loss: 0.6376 - val_accuracy: 0.7980
Epoch 20/100
71/71 [==============================] - 1s 15ms/step - loss: 0.5648 - accuracy: 0.8213 - val_loss: 0.5612 - val_accuracy: 0.8217
Epoch 21/100
71/71 [==============================] - 1s 16ms/step - loss: 0.5398 - accuracy: 0.8281 - val_loss: 0.6963 - val_accuracy: 0.7970
Epoch 22/100
71/71 [==============================] - 1s 16ms/step - loss: 0.5301 - accuracy: 0.8261 - val_loss: 0.5561 - val_accuracy: 0.8230
Epoch 23/100
71/71 [==============================] - 1s 16ms/step - loss: 0.4960 - accuracy: 0.8449 - val_loss: 0.5017 - val_accuracy: 0.8503
Epoch 24/100
71/71 [==============================] - 1s 16ms/step - loss: 0.4332 - accuracy: 0.8638 - val_loss: 0.5146 - val_accuracy: 0.8423
Epoch 25/100
71/71 [==============================] - 1s 16ms/step - loss: 0.4214 - accuracy: 0.8662 - val_loss: 0.4564 - val_accuracy: 0.8573
Epoch 26/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4118 - accuracy: 0.8744 - val_loss: 0.4540 - val_accuracy: 0.8617
Epoch 27/100
71/71 [==============================] - 1s 16ms/step - loss: 0.3671 - accuracy: 0.8848 - val_loss: 0.4492 - val_accuracy: 0.8593
Epoch 28/100
71/71 [==============================] - 1s 16ms/step - loss: 0.3597 - accuracy: 0.8834 - val_loss: 0.4514 - val_accuracy: 0.8637
Epoch 29/100
71/71 [==============================] - 1s 16ms/step - loss: 0.3529 - accuracy: 0.8909 - val_loss: 0.4744 - val_accuracy: 0.8567
Epoch 30/100
71/71 [==============================] - 1s 16ms/step - loss: 0.3279 - accuracy: 0.8963 - val_loss: 0.3920 - val_accuracy: 0.8797
Epoch 31/100
71/71 [==============================] - 1s 16ms/step - loss: 0.3039 - accuracy: 0.9029 - val_loss: 0.4499 - val_accuracy: 0.8717
Epoch 32/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2945 - accuracy: 0.9060 - val_loss: 0.4802 - val_accuracy: 0.8617
Epoch 33/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2834 - accuracy: 0.9113 - val_loss: 0.4157 - val_accuracy: 0.8777
Epoch 34/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2592 - accuracy: 0.9184 - val_loss: 0.5107 - val_accuracy: 0.8537
Epoch 35/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2719 - accuracy: 0.9136 - val_loss: 0.4554 - val_accuracy: 0.8740
Epoch 36/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2700 - accuracy: 0.9152 - val_loss: 0.4590 - val_accuracy: 0.8717
Epoch 37/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2623 - accuracy: 0.9137 - val_loss: 0.3993 - val_accuracy: 0.8943
Epoch 38/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2407 - accuracy: 0.9229 - val_loss: 0.3903 - val_accuracy: 0.8910
Epoch 39/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2323 - accuracy: 0.9283 - val_loss: 0.5136 - val_accuracy: 0.8730
Epoch 40/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2366 - accuracy: 0.9263 - val_loss: 0.4174 - val_accuracy: 0.8873
Epoch 41/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2192 - accuracy: 0.9340 - val_loss: 0.3731 - val_accuracy: 0.8970
Epoch 42/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2051 - accuracy: 0.9353 - val_loss: 0.3648 - val_accuracy: 0.9007
Epoch 43/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1897 - accuracy: 0.9406 - val_loss: 0.4068 - val_accuracy: 0.8887
Epoch 44/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2089 - accuracy: 0.9346 - val_loss: 0.3983 - val_accuracy: 0.8923
Epoch 45/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1948 - accuracy: 0.9382 - val_loss: 0.3979 - val_accuracy: 0.8963
Epoch 46/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1870 - accuracy: 0.9413 - val_loss: 0.3782 - val_accuracy: 0.8997
Epoch 47/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1713 - accuracy: 0.9475 - val_loss: 0.3685 - val_accuracy: 0.9040
Epoch 48/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1750 - accuracy: 0.9458 - val_loss: 0.4434 - val_accuracy: 0.8883
Epoch 49/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1637 - accuracy: 0.9494 - val_loss: 0.3612 - val_accuracy: 0.9043
Epoch 50/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1478 - accuracy: 0.9548 - val_loss: 0.4553 - val_accuracy: 0.8897
Epoch 51/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1630 - accuracy: 0.9518 - val_loss: 0.3631 - val_accuracy: 0.9040
Epoch 52/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1412 - accuracy: 0.9564 - val_loss: 0.3898 - val_accuracy: 0.9000
Epoch 53/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1363 - accuracy: 0.9565 - val_loss: 0.4430 - val_accuracy: 0.8957
Epoch 54/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1803 - accuracy: 0.9473 - val_loss: 0.4092 - val_accuracy: 0.8967
Epoch 55/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1611 - accuracy: 0.9519 - val_loss: 0.3798 - val_accuracy: 0.9047
Epoch 56/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1451 - accuracy: 0.9555 - val_loss: 0.3937 - val_accuracy: 0.9070
Epoch 57/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1648 - accuracy: 0.9492 - val_loss: 0.4529 - val_accuracy: 0.8943
Epoch 58/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1328 - accuracy: 0.9581 - val_loss: 0.3805 - val_accuracy: 0.9037
Epoch 59/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1521 - accuracy: 0.9545 - val_loss: 0.3689 - val_accuracy: 0.9047
Epoch 60/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1550 - accuracy: 0.9541 - val_loss: 0.4008 - val_accuracy: 0.9010
Epoch 61/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1275 - accuracy: 0.9580 - val_loss: 0.5111 - val_accuracy: 0.8853
Epoch 62/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1334 - accuracy: 0.9593 - val_loss: 0.3899 - val_accuracy: 0.9040
Epoch 63/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1152 - accuracy: 0.9630 - val_loss: 0.4216 - val_accuracy: 0.9007
Epoch 64/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1140 - accuracy: 0.9631 - val_loss: 0.4081 - val_accuracy: 0.9023
Epoch 65/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1489 - accuracy: 0.9528 - val_loss: 0.4129 - val_accuracy: 0.8973
Epoch 66/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1452 - accuracy: 0.9557 - val_loss: 0.3733 - val_accuracy: 0.9043
Epoch 67/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1046 - accuracy: 0.9671 - val_loss: 0.3906 - val_accuracy: 0.9077
Epoch 68/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0999 - accuracy: 0.9663 - val_loss: 0.3949 - val_accuracy: 0.9110
Epoch 69/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1150 - accuracy: 0.9650 - val_loss: 0.4444 - val_accuracy: 0.9023
Epoch 70/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1004 - accuracy: 0.9713 - val_loss: 0.3984 - val_accuracy: 0.9070
Epoch 71/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1162 - accuracy: 0.9639 - val_loss: 0.5054 - val_accuracy: 0.8843
Epoch 72/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1191 - accuracy: 0.9626 - val_loss: 0.3756 - val_accuracy: 0.9117
Epoch 73/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0910 - accuracy: 0.9736 - val_loss: 0.3580 - val_accuracy: 0.9123
Epoch 74/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1035 - accuracy: 0.9667 - val_loss: 0.3596 - val_accuracy: 0.9140
Epoch 75/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0934 - accuracy: 0.9715 - val_loss: 0.4343 - val_accuracy: 0.9047
Epoch 76/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0833 - accuracy: 0.9740 - val_loss: 0.3879 - val_accuracy: 0.9087
Epoch 77/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1090 - accuracy: 0.9658 - val_loss: 0.3845 - val_accuracy: 0.9127
Epoch 78/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1116 - accuracy: 0.9667 - val_loss: 0.4193 - val_accuracy: 0.9050
Epoch 79/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0971 - accuracy: 0.9702 - val_loss: 0.3762 - val_accuracy: 0.9140
Epoch 80/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0973 - accuracy: 0.9704 - val_loss: 0.4096 - val_accuracy: 0.9090
Epoch 81/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1019 - accuracy: 0.9703 - val_loss: 0.4147 - val_accuracy: 0.9047
Epoch 82/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0874 - accuracy: 0.9729 - val_loss: 0.4471 - val_accuracy: 0.9067
Epoch 83/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0922 - accuracy: 0.9712 - val_loss: 0.5087 - val_accuracy: 0.8937
Epoch 84/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1060 - accuracy: 0.9678 - val_loss: 0.4026 - val_accuracy: 0.9090
Epoch 85/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0859 - accuracy: 0.9724 - val_loss: 0.4136 - val_accuracy: 0.9087
Epoch 86/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1023 - accuracy: 0.9690 - val_loss: 0.3992 - val_accuracy: 0.9120
Epoch 87/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0897 - accuracy: 0.9715 - val_loss: 0.3993 - val_accuracy: 0.9083
Epoch 88/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0861 - accuracy: 0.9749 - val_loss: 0.4269 - val_accuracy: 0.9017
Epoch 89/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0932 - accuracy: 0.9730 - val_loss: 0.4025 - val_accuracy: 0.9040
Epoch 90/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0827 - accuracy: 0.9752 - val_loss: 0.4416 - val_accuracy: 0.9083
Epoch 91/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0779 - accuracy: 0.9757 - val_loss: 0.4466 - val_accuracy: 0.9100
Epoch 92/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0694 - accuracy: 0.9781 - val_loss: 0.4052 - val_accuracy: 0.9097
Epoch 93/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0792 - accuracy: 0.9766 - val_loss: 0.4245 - val_accuracy: 0.9117
Epoch 94/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0977 - accuracy: 0.9706 - val_loss: 0.4776 - val_accuracy: 0.9040
Epoch 95/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0916 - accuracy: 0.9714 - val_loss: 0.4266 - val_accuracy: 0.9070
Epoch 96/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0858 - accuracy: 0.9737 - val_loss: 0.4047 - val_accuracy: 0.9140
Epoch 97/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0873 - accuracy: 0.9750 - val_loss: 0.3842 - val_accuracy: 0.9123
Epoch 98/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0805 - accuracy: 0.9774 - val_loss: 0.3853 - val_accuracy: 0.9120
Epoch 99/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1051 - accuracy: 0.9659 - val_loss: 0.4232 - val_accuracy: 0.9097
Epoch 100/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0933 - accuracy: 0.9734 - val_loss: 0.3822 - val_accuracy: 0.9137
94/94 [==============================] - 0s 3ms/step - loss: 0.3935 - accuracy: 0.9167
CNN Error: 8.33%
In [97]:
model.summary()
Model: "sequential_31"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d_88 (Conv2D)          (None, 29, 29, 64)        640       
                                                                 
 conv2d_89 (Conv2D)          (None, 27, 27, 64)        36928     
                                                                 
 max_pooling2d_80 (MaxPoolin  (None, 13, 13, 64)       0         
 g2D)                                                            
                                                                 
 dropout_80 (Dropout)        (None, 13, 13, 64)        0         
                                                                 
 conv2d_90 (Conv2D)          (None, 11, 11, 128)       73856     
                                                                 
 conv2d_91 (Conv2D)          (None, 9, 9, 128)         147584    
                                                                 
 max_pooling2d_81 (MaxPoolin  (None, 4, 4, 128)        0         
 g2D)                                                            
                                                                 
 dropout_81 (Dropout)        (None, 4, 4, 128)         0         
                                                                 
 flatten_25 (Flatten)        (None, 2048)              0         
                                                                 
 dense_78 (Dense)            (None, 256)               524544    
                                                                 
 dropout_82 (Dropout)        (None, 256)               0         
                                                                 
 dense_79 (Dense)            (None, 128)               32896     
                                                                 
 dropout_83 (Dropout)        (None, 128)               0         
                                                                 
 dense_80 (Dense)            (None, 15)                1935      
                                                                 
=================================================================
Total params: 818,383
Trainable params: 818,383
Non-trainable params: 0
_________________________________________________________________

Load Model 3¶

In [98]:
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.load_weights("./CNN Weights (31 by 31)/model3.h5")

From the scores, I will choose Model 2 and Model 3 to further improve it due to its high test and validation accuracy scores¶

Data Augmentation¶

For augmentation we will add horizontal RandomFlip and GaussianNoise and assess it separately¶

Model 2 (Before Augmentation)¶

In [99]:
# Model 2
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 13ms/step - loss: 2.6077 - accuracy: 0.1030 - val_loss: 2.6207 - val_accuracy: 0.1020
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4655 - accuracy: 0.1477 - val_loss: 2.4488 - val_accuracy: 0.1523
Epoch 3/100
71/71 [==============================] - 1s 11ms/step - loss: 2.2717 - accuracy: 0.2200 - val_loss: 2.1590 - val_accuracy: 0.3030
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0455 - accuracy: 0.3140 - val_loss: 1.8235 - val_accuracy: 0.4113
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7305 - accuracy: 0.4309 - val_loss: 1.5823 - val_accuracy: 0.4700
Epoch 6/100
71/71 [==============================] - 1s 10ms/step - loss: 1.4929 - accuracy: 0.5078 - val_loss: 1.3519 - val_accuracy: 0.5540
Epoch 7/100
71/71 [==============================] - 1s 10ms/step - loss: 1.3897 - accuracy: 0.5474 - val_loss: 1.2367 - val_accuracy: 0.5913
Epoch 8/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2234 - accuracy: 0.6050 - val_loss: 1.0181 - val_accuracy: 0.6790
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0624 - accuracy: 0.6552 - val_loss: 0.9355 - val_accuracy: 0.7030
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9465 - accuracy: 0.6938 - val_loss: 0.8496 - val_accuracy: 0.7283
Epoch 11/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8823 - accuracy: 0.7160 - val_loss: 0.7990 - val_accuracy: 0.7460
Epoch 12/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8337 - accuracy: 0.7308 - val_loss: 0.6888 - val_accuracy: 0.7770
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7296 - accuracy: 0.7656 - val_loss: 0.7154 - val_accuracy: 0.7737
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6901 - accuracy: 0.7841 - val_loss: 0.5451 - val_accuracy: 0.8357
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6279 - accuracy: 0.8016 - val_loss: 0.5843 - val_accuracy: 0.8150
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6000 - accuracy: 0.8059 - val_loss: 0.4731 - val_accuracy: 0.8470
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5383 - accuracy: 0.8305 - val_loss: 0.6256 - val_accuracy: 0.7963
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5261 - accuracy: 0.8296 - val_loss: 0.4845 - val_accuracy: 0.8513
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4794 - accuracy: 0.8508 - val_loss: 0.4187 - val_accuracy: 0.8677
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4101 - accuracy: 0.8662 - val_loss: 0.3861 - val_accuracy: 0.8767
Epoch 21/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4014 - accuracy: 0.8745 - val_loss: 0.3463 - val_accuracy: 0.8970
Epoch 22/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3905 - accuracy: 0.8755 - val_loss: 0.3720 - val_accuracy: 0.8850
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3666 - accuracy: 0.8814 - val_loss: 0.3336 - val_accuracy: 0.8997
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3136 - accuracy: 0.8986 - val_loss: 0.3082 - val_accuracy: 0.9060
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3244 - accuracy: 0.8975 - val_loss: 0.2836 - val_accuracy: 0.9153
Epoch 26/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3004 - accuracy: 0.9022 - val_loss: 0.3079 - val_accuracy: 0.9107
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2974 - accuracy: 0.9067 - val_loss: 0.3275 - val_accuracy: 0.9037
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2805 - accuracy: 0.9092 - val_loss: 0.3728 - val_accuracy: 0.8897
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2601 - accuracy: 0.9166 - val_loss: 0.2895 - val_accuracy: 0.9180
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2577 - accuracy: 0.9175 - val_loss: 0.2829 - val_accuracy: 0.9177
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2324 - accuracy: 0.9228 - val_loss: 0.2917 - val_accuracy: 0.9160
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2581 - accuracy: 0.9159 - val_loss: 0.2936 - val_accuracy: 0.9133
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2265 - accuracy: 0.9286 - val_loss: 0.2670 - val_accuracy: 0.9240
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2103 - accuracy: 0.9307 - val_loss: 0.2928 - val_accuracy: 0.9137
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2209 - accuracy: 0.9284 - val_loss: 0.2996 - val_accuracy: 0.9137
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2019 - accuracy: 0.9309 - val_loss: 0.2907 - val_accuracy: 0.9133
Epoch 37/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1947 - accuracy: 0.9383 - val_loss: 0.4029 - val_accuracy: 0.8793
Epoch 38/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1994 - accuracy: 0.9312 - val_loss: 0.2620 - val_accuracy: 0.9270
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1752 - accuracy: 0.9415 - val_loss: 0.2648 - val_accuracy: 0.9253
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1747 - accuracy: 0.9441 - val_loss: 0.3142 - val_accuracy: 0.9147
Epoch 41/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1756 - accuracy: 0.9456 - val_loss: 0.2399 - val_accuracy: 0.9317
Epoch 42/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1566 - accuracy: 0.9498 - val_loss: 0.2370 - val_accuracy: 0.9400
Epoch 43/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1491 - accuracy: 0.9524 - val_loss: 0.2519 - val_accuracy: 0.9320
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1610 - accuracy: 0.9489 - val_loss: 0.2484 - val_accuracy: 0.9327
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1691 - accuracy: 0.9459 - val_loss: 0.2309 - val_accuracy: 0.9350
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1585 - accuracy: 0.9516 - val_loss: 0.2401 - val_accuracy: 0.9327
Epoch 47/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1473 - accuracy: 0.9530 - val_loss: 0.2510 - val_accuracy: 0.9273
Epoch 48/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1443 - accuracy: 0.9535 - val_loss: 0.2587 - val_accuracy: 0.9297
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1192 - accuracy: 0.9617 - val_loss: 0.2320 - val_accuracy: 0.9330
Epoch 50/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1318 - accuracy: 0.9589 - val_loss: 0.2403 - val_accuracy: 0.9343
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1227 - accuracy: 0.9627 - val_loss: 0.2476 - val_accuracy: 0.9330
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1220 - accuracy: 0.9623 - val_loss: 0.2404 - val_accuracy: 0.9353
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1259 - accuracy: 0.9598 - val_loss: 0.2328 - val_accuracy: 0.9363
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1314 - accuracy: 0.9576 - val_loss: 0.2491 - val_accuracy: 0.9337
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1159 - accuracy: 0.9626 - val_loss: 0.2466 - val_accuracy: 0.9343
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1013 - accuracy: 0.9678 - val_loss: 0.2299 - val_accuracy: 0.9423
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1218 - accuracy: 0.9609 - val_loss: 0.2416 - val_accuracy: 0.9357
Epoch 58/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1337 - accuracy: 0.9577 - val_loss: 0.2158 - val_accuracy: 0.9433
Epoch 59/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1040 - accuracy: 0.9652 - val_loss: 0.2482 - val_accuracy: 0.9360
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1220 - accuracy: 0.9618 - val_loss: 0.2854 - val_accuracy: 0.9290
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1101 - accuracy: 0.9669 - val_loss: 0.2423 - val_accuracy: 0.9337
Epoch 62/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1225 - accuracy: 0.9596 - val_loss: 0.2327 - val_accuracy: 0.9413
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1113 - accuracy: 0.9641 - val_loss: 0.2439 - val_accuracy: 0.9393
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0981 - accuracy: 0.9700 - val_loss: 0.2430 - val_accuracy: 0.9373
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0990 - accuracy: 0.9672 - val_loss: 0.2532 - val_accuracy: 0.9383
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0990 - accuracy: 0.9692 - val_loss: 0.2345 - val_accuracy: 0.9437
Epoch 67/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1002 - accuracy: 0.9665 - val_loss: 0.2428 - val_accuracy: 0.9350
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1142 - accuracy: 0.9639 - val_loss: 0.2401 - val_accuracy: 0.9400
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0957 - accuracy: 0.9709 - val_loss: 0.2586 - val_accuracy: 0.9367
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1076 - accuracy: 0.9665 - val_loss: 0.2421 - val_accuracy: 0.9403
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0814 - accuracy: 0.9739 - val_loss: 0.2535 - val_accuracy: 0.9387
Epoch 72/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0918 - accuracy: 0.9712 - val_loss: 0.3083 - val_accuracy: 0.9247
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0950 - accuracy: 0.9693 - val_loss: 0.2460 - val_accuracy: 0.9370
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0942 - accuracy: 0.9719 - val_loss: 0.2840 - val_accuracy: 0.9293
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1098 - accuracy: 0.9664 - val_loss: 0.2606 - val_accuracy: 0.9323
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1005 - accuracy: 0.9691 - val_loss: 0.3088 - val_accuracy: 0.9223
Epoch 77/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0974 - accuracy: 0.9673 - val_loss: 0.2843 - val_accuracy: 0.9297
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1003 - accuracy: 0.9690 - val_loss: 0.2260 - val_accuracy: 0.9373
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0785 - accuracy: 0.9737 - val_loss: 0.2218 - val_accuracy: 0.9457
Epoch 80/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0979 - accuracy: 0.9671 - val_loss: 0.2438 - val_accuracy: 0.9407
Epoch 81/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0932 - accuracy: 0.9699 - val_loss: 0.2191 - val_accuracy: 0.9450
Epoch 82/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0738 - accuracy: 0.9770 - val_loss: 0.2451 - val_accuracy: 0.9397
Epoch 83/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0801 - accuracy: 0.9724 - val_loss: 0.2394 - val_accuracy: 0.9407
Epoch 84/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0847 - accuracy: 0.9723 - val_loss: 0.2454 - val_accuracy: 0.9393
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0865 - accuracy: 0.9725 - val_loss: 0.2355 - val_accuracy: 0.9443
Epoch 86/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0899 - accuracy: 0.9737 - val_loss: 0.2358 - val_accuracy: 0.9407
Epoch 87/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0892 - accuracy: 0.9709 - val_loss: 0.2603 - val_accuracy: 0.9380
Epoch 88/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0841 - accuracy: 0.9740 - val_loss: 0.2151 - val_accuracy: 0.9487
Epoch 89/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0710 - accuracy: 0.9774 - val_loss: 0.2425 - val_accuracy: 0.9420
Epoch 90/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0891 - accuracy: 0.9736 - val_loss: 0.2209 - val_accuracy: 0.9473
Epoch 91/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0721 - accuracy: 0.9755 - val_loss: 0.2409 - val_accuracy: 0.9433
Epoch 92/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0702 - accuracy: 0.9792 - val_loss: 0.2222 - val_accuracy: 0.9467
Epoch 93/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0685 - accuracy: 0.9787 - val_loss: 0.2145 - val_accuracy: 0.9503
Epoch 94/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0690 - accuracy: 0.9788 - val_loss: 0.2223 - val_accuracy: 0.9450
Epoch 95/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0648 - accuracy: 0.9801 - val_loss: 0.2287 - val_accuracy: 0.9450
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0754 - accuracy: 0.9767 - val_loss: 0.2414 - val_accuracy: 0.9407
Epoch 97/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0691 - accuracy: 0.9775 - val_loss: 0.2912 - val_accuracy: 0.9347
Epoch 98/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0825 - accuracy: 0.9764 - val_loss: 0.2437 - val_accuracy: 0.9397
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0797 - accuracy: 0.9747 - val_loss: 0.2382 - val_accuracy: 0.9443
Epoch 100/100
71/71 [==============================] - 1s 9ms/step - loss: 0.0844 - accuracy: 0.9751 - val_loss: 0.2353 - val_accuracy: 0.9397
94/94 [==============================] - 0s 3ms/step - loss: 0.2441 - accuracy: 0.9400
CNN Error: 6.00%

Model 2 (After Augmentation) - Random Flip¶

In [102]:
# Model 2
model = Sequential()
model.add(RandomFlip('horizontal',input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 4s 41ms/step - loss: 2.6033 - accuracy: 0.1029 - val_loss: 2.6752 - val_accuracy: 0.0870
Epoch 2/100
71/71 [==============================] - 3s 45ms/step - loss: 2.4957 - accuracy: 0.1320 - val_loss: 2.4555 - val_accuracy: 0.1507
Epoch 3/100
71/71 [==============================] - 3s 46ms/step - loss: 2.2966 - accuracy: 0.2080 - val_loss: 2.1820 - val_accuracy: 0.2750
Epoch 4/100
71/71 [==============================] - 3s 46ms/step - loss: 2.0103 - accuracy: 0.3294 - val_loss: 1.9075 - val_accuracy: 0.3607
Epoch 5/100
71/71 [==============================] - 3s 47ms/step - loss: 1.7545 - accuracy: 0.4178 - val_loss: 1.5676 - val_accuracy: 0.4917
Epoch 6/100
71/71 [==============================] - 3s 47ms/step - loss: 1.5161 - accuracy: 0.4994 - val_loss: 1.3387 - val_accuracy: 0.5650
Epoch 7/100
71/71 [==============================] - 3s 46ms/step - loss: 1.3109 - accuracy: 0.5682 - val_loss: 1.0984 - val_accuracy: 0.6510
Epoch 8/100
71/71 [==============================] - 3s 49ms/step - loss: 1.1930 - accuracy: 0.6092 - val_loss: 1.0017 - val_accuracy: 0.6813
Epoch 9/100
71/71 [==============================] - 3s 49ms/step - loss: 1.0467 - accuracy: 0.6595 - val_loss: 0.9193 - val_accuracy: 0.7117
Epoch 10/100
71/71 [==============================] - 3s 49ms/step - loss: 0.9416 - accuracy: 0.6897 - val_loss: 0.7507 - val_accuracy: 0.7627
Epoch 11/100
71/71 [==============================] - 4s 50ms/step - loss: 0.8692 - accuracy: 0.7200 - val_loss: 0.6977 - val_accuracy: 0.7763
Epoch 12/100
71/71 [==============================] - 4s 49ms/step - loss: 0.7742 - accuracy: 0.7487 - val_loss: 0.6528 - val_accuracy: 0.7930
Epoch 13/100
71/71 [==============================] - 3s 48ms/step - loss: 0.7543 - accuracy: 0.7535 - val_loss: 0.6301 - val_accuracy: 0.8010
Epoch 14/100
71/71 [==============================] - 3s 48ms/step - loss: 0.6631 - accuracy: 0.7819 - val_loss: 0.5595 - val_accuracy: 0.8223
Epoch 15/100
71/71 [==============================] - 3s 48ms/step - loss: 0.6117 - accuracy: 0.7977 - val_loss: 0.5016 - val_accuracy: 0.8340
Epoch 16/100
71/71 [==============================] - 4s 50ms/step - loss: 0.5534 - accuracy: 0.8218 - val_loss: 0.4889 - val_accuracy: 0.8427
Epoch 17/100
71/71 [==============================] - 3s 46ms/step - loss: 0.5045 - accuracy: 0.8377 - val_loss: 0.4345 - val_accuracy: 0.8563
Epoch 18/100
71/71 [==============================] - 3s 45ms/step - loss: 0.4992 - accuracy: 0.8372 - val_loss: 0.5062 - val_accuracy: 0.8453
Epoch 19/100
71/71 [==============================] - 3s 47ms/step - loss: 0.4610 - accuracy: 0.8507 - val_loss: 0.3746 - val_accuracy: 0.8790
Epoch 20/100
71/71 [==============================] - 3s 46ms/step - loss: 0.4267 - accuracy: 0.8601 - val_loss: 0.3862 - val_accuracy: 0.8763
Epoch 21/100
71/71 [==============================] - 3s 48ms/step - loss: 0.4060 - accuracy: 0.8712 - val_loss: 0.3949 - val_accuracy: 0.8757
Epoch 22/100
71/71 [==============================] - 3s 49ms/step - loss: 0.3836 - accuracy: 0.8774 - val_loss: 0.3391 - val_accuracy: 0.8933
Epoch 23/100
71/71 [==============================] - 3s 48ms/step - loss: 0.3425 - accuracy: 0.8886 - val_loss: 0.3199 - val_accuracy: 0.8983
Epoch 24/100
71/71 [==============================] - 3s 47ms/step - loss: 0.3293 - accuracy: 0.8955 - val_loss: 0.3549 - val_accuracy: 0.8840
Epoch 25/100
71/71 [==============================] - 3s 48ms/step - loss: 0.3320 - accuracy: 0.8923 - val_loss: 0.3171 - val_accuracy: 0.9003
Epoch 26/100
71/71 [==============================] - 3s 47ms/step - loss: 0.2945 - accuracy: 0.9049 - val_loss: 0.3114 - val_accuracy: 0.9020
Epoch 27/100
71/71 [==============================] - 3s 46ms/step - loss: 0.3203 - accuracy: 0.8953 - val_loss: 0.3221 - val_accuracy: 0.8967
Epoch 28/100
71/71 [==============================] - 3s 47ms/step - loss: 0.2619 - accuracy: 0.9218 - val_loss: 0.3191 - val_accuracy: 0.9030
Epoch 29/100
71/71 [==============================] - 3s 49ms/step - loss: 0.2777 - accuracy: 0.9116 - val_loss: 0.2833 - val_accuracy: 0.9113
Epoch 30/100
71/71 [==============================] - 4s 50ms/step - loss: 0.2547 - accuracy: 0.9195 - val_loss: 0.2825 - val_accuracy: 0.9190
Epoch 31/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2389 - accuracy: 0.9214 - val_loss: 0.3154 - val_accuracy: 0.9010
Epoch 32/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2285 - accuracy: 0.9207 - val_loss: 0.2902 - val_accuracy: 0.9127
Epoch 33/100
71/71 [==============================] - 3s 49ms/step - loss: 0.2176 - accuracy: 0.9277 - val_loss: 0.3155 - val_accuracy: 0.9000
Epoch 34/100
71/71 [==============================] - 3s 49ms/step - loss: 0.2282 - accuracy: 0.9270 - val_loss: 0.2755 - val_accuracy: 0.9200
Epoch 35/100
71/71 [==============================] - 3s 49ms/step - loss: 0.2193 - accuracy: 0.9286 - val_loss: 0.2810 - val_accuracy: 0.9167
Epoch 36/100
71/71 [==============================] - 4s 50ms/step - loss: 0.2052 - accuracy: 0.9349 - val_loss: 0.2727 - val_accuracy: 0.9177
Epoch 37/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1849 - accuracy: 0.9431 - val_loss: 0.2735 - val_accuracy: 0.9210
Epoch 38/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2197 - accuracy: 0.9318 - val_loss: 0.2557 - val_accuracy: 0.9237
Epoch 39/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1844 - accuracy: 0.9425 - val_loss: 0.2340 - val_accuracy: 0.9310
Epoch 40/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1623 - accuracy: 0.9476 - val_loss: 0.2350 - val_accuracy: 0.9330
Epoch 41/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1785 - accuracy: 0.9433 - val_loss: 0.2318 - val_accuracy: 0.9313
Epoch 42/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1557 - accuracy: 0.9475 - val_loss: 0.2407 - val_accuracy: 0.9297
Epoch 43/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1615 - accuracy: 0.9458 - val_loss: 0.2277 - val_accuracy: 0.9333
Epoch 44/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1629 - accuracy: 0.9459 - val_loss: 0.2423 - val_accuracy: 0.9307
Epoch 45/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1471 - accuracy: 0.9506 - val_loss: 0.2445 - val_accuracy: 0.9287
Epoch 46/100
71/71 [==============================] - 4s 50ms/step - loss: 0.1419 - accuracy: 0.9541 - val_loss: 0.2518 - val_accuracy: 0.9277
Epoch 47/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1341 - accuracy: 0.9586 - val_loss: 0.2438 - val_accuracy: 0.9313
Epoch 48/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1534 - accuracy: 0.9509 - val_loss: 0.2709 - val_accuracy: 0.9233
Epoch 49/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1355 - accuracy: 0.9569 - val_loss: 0.2715 - val_accuracy: 0.9273
Epoch 50/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1416 - accuracy: 0.9546 - val_loss: 0.2603 - val_accuracy: 0.9277
Epoch 51/100
71/71 [==============================] - 4s 50ms/step - loss: 0.1426 - accuracy: 0.9549 - val_loss: 0.2164 - val_accuracy: 0.9377
Epoch 52/100
71/71 [==============================] - 4s 50ms/step - loss: 0.1443 - accuracy: 0.9528 - val_loss: 0.2268 - val_accuracy: 0.9333
Epoch 53/100
71/71 [==============================] - 4s 50ms/step - loss: 0.1447 - accuracy: 0.9530 - val_loss: 0.2345 - val_accuracy: 0.9330
Epoch 54/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1326 - accuracy: 0.9585 - val_loss: 0.2586 - val_accuracy: 0.9243
Epoch 55/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1534 - accuracy: 0.9510 - val_loss: 0.2426 - val_accuracy: 0.9287
Epoch 56/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1092 - accuracy: 0.9672 - val_loss: 0.2164 - val_accuracy: 0.9373
Epoch 57/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1065 - accuracy: 0.9670 - val_loss: 0.3004 - val_accuracy: 0.9193
Epoch 58/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1349 - accuracy: 0.9580 - val_loss: 0.2574 - val_accuracy: 0.9260
Epoch 59/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1187 - accuracy: 0.9599 - val_loss: 0.2519 - val_accuracy: 0.9320
Epoch 60/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1119 - accuracy: 0.9628 - val_loss: 0.2300 - val_accuracy: 0.9373
Epoch 61/100
71/71 [==============================] - 4s 49ms/step - loss: 0.1185 - accuracy: 0.9613 - val_loss: 0.2334 - val_accuracy: 0.9397
Epoch 62/100
71/71 [==============================] - 4s 52ms/step - loss: 0.1127 - accuracy: 0.9633 - val_loss: 0.2631 - val_accuracy: 0.9260
Epoch 63/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1249 - accuracy: 0.9611 - val_loss: 0.2314 - val_accuracy: 0.9320
Epoch 64/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1115 - accuracy: 0.9656 - val_loss: 0.2572 - val_accuracy: 0.9360
Epoch 65/100
71/71 [==============================] - 3s 46ms/step - loss: 0.0981 - accuracy: 0.9709 - val_loss: 0.2389 - val_accuracy: 0.9347
Epoch 66/100
71/71 [==============================] - 3s 46ms/step - loss: 0.0959 - accuracy: 0.9702 - val_loss: 0.2595 - val_accuracy: 0.9307
Epoch 67/100
71/71 [==============================] - 4s 50ms/step - loss: 0.1119 - accuracy: 0.9633 - val_loss: 0.2427 - val_accuracy: 0.9353
Epoch 68/100
71/71 [==============================] - 3s 44ms/step - loss: 0.0899 - accuracy: 0.9698 - val_loss: 0.2330 - val_accuracy: 0.9387
Epoch 69/100
71/71 [==============================] - 3s 47ms/step - loss: 0.0986 - accuracy: 0.9713 - val_loss: 0.2476 - val_accuracy: 0.9347
Epoch 70/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1106 - accuracy: 0.9643 - val_loss: 0.2732 - val_accuracy: 0.9287
Epoch 71/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1005 - accuracy: 0.9685 - val_loss: 0.2280 - val_accuracy: 0.9400
Epoch 72/100
71/71 [==============================] - 4s 50ms/step - loss: 0.0977 - accuracy: 0.9702 - val_loss: 0.2680 - val_accuracy: 0.9300
Epoch 73/100
71/71 [==============================] - 4s 49ms/step - loss: 0.0810 - accuracy: 0.9735 - val_loss: 0.2409 - val_accuracy: 0.9370
Epoch 74/100
71/71 [==============================] - 3s 48ms/step - loss: 0.0847 - accuracy: 0.9728 - val_loss: 0.2330 - val_accuracy: 0.9383
Epoch 75/100
71/71 [==============================] - 4s 52ms/step - loss: 0.1138 - accuracy: 0.9648 - val_loss: 0.2690 - val_accuracy: 0.9280
Epoch 76/100
71/71 [==============================] - 3s 47ms/step - loss: 0.0936 - accuracy: 0.9709 - val_loss: 0.2330 - val_accuracy: 0.9343
Epoch 77/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1065 - accuracy: 0.9682 - val_loss: 0.2463 - val_accuracy: 0.9317
Epoch 78/100
71/71 [==============================] - 4s 49ms/step - loss: 0.1035 - accuracy: 0.9678 - val_loss: 0.3069 - val_accuracy: 0.9190
Epoch 79/100
71/71 [==============================] - 3s 48ms/step - loss: 0.0911 - accuracy: 0.9699 - val_loss: 0.2270 - val_accuracy: 0.9373
Epoch 80/100
71/71 [==============================] - 3s 49ms/step - loss: 0.0910 - accuracy: 0.9709 - val_loss: 0.2317 - val_accuracy: 0.9373
Epoch 81/100
71/71 [==============================] - 4s 53ms/step - loss: 0.1043 - accuracy: 0.9687 - val_loss: 0.2465 - val_accuracy: 0.9397
Epoch 82/100
71/71 [==============================] - 4s 50ms/step - loss: 0.0827 - accuracy: 0.9720 - val_loss: 0.3077 - val_accuracy: 0.9220
Epoch 83/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1189 - accuracy: 0.9627 - val_loss: 0.2278 - val_accuracy: 0.9393
Epoch 84/100
71/71 [==============================] - 4s 52ms/step - loss: 0.0812 - accuracy: 0.9749 - val_loss: 0.2772 - val_accuracy: 0.9247
Epoch 85/100
71/71 [==============================] - 4s 50ms/step - loss: 0.0800 - accuracy: 0.9741 - val_loss: 0.2210 - val_accuracy: 0.9447
Epoch 86/100
71/71 [==============================] - 4s 50ms/step - loss: 0.0811 - accuracy: 0.9718 - val_loss: 0.2344 - val_accuracy: 0.9407
Epoch 87/100
71/71 [==============================] - 3s 49ms/step - loss: 0.0790 - accuracy: 0.9752 - val_loss: 0.2496 - val_accuracy: 0.9323
Epoch 88/100
71/71 [==============================] - 3s 48ms/step - loss: 0.0872 - accuracy: 0.9741 - val_loss: 0.2222 - val_accuracy: 0.9433
Epoch 89/100
71/71 [==============================] - 3s 48ms/step - loss: 0.0771 - accuracy: 0.9756 - val_loss: 0.2366 - val_accuracy: 0.9363
Epoch 90/100
71/71 [==============================] - 3s 46ms/step - loss: 0.0923 - accuracy: 0.9713 - val_loss: 0.2462 - val_accuracy: 0.9347
Epoch 91/100
71/71 [==============================] - 3s 44ms/step - loss: 0.0814 - accuracy: 0.9752 - val_loss: 0.2297 - val_accuracy: 0.9370
Epoch 92/100
71/71 [==============================] - 3s 45ms/step - loss: 0.0677 - accuracy: 0.9778 - val_loss: 0.2577 - val_accuracy: 0.9400
Epoch 93/100
71/71 [==============================] - 3s 42ms/step - loss: 0.0788 - accuracy: 0.9756 - val_loss: 0.2364 - val_accuracy: 0.9430
Epoch 94/100
71/71 [==============================] - 3s 43ms/step - loss: 0.0729 - accuracy: 0.9776 - val_loss: 0.2413 - val_accuracy: 0.9400
Epoch 95/100
71/71 [==============================] - 3s 42ms/step - loss: 0.0720 - accuracy: 0.9761 - val_loss: 0.2514 - val_accuracy: 0.9370
Epoch 96/100
71/71 [==============================] - 3s 43ms/step - loss: 0.0945 - accuracy: 0.9695 - val_loss: 0.2382 - val_accuracy: 0.9400
Epoch 97/100
71/71 [==============================] - 3s 42ms/step - loss: 0.0695 - accuracy: 0.9783 - val_loss: 0.2373 - val_accuracy: 0.9410
Epoch 98/100
71/71 [==============================] - 3s 47ms/step - loss: 0.0655 - accuracy: 0.9807 - val_loss: 0.2303 - val_accuracy: 0.9447
Epoch 99/100
71/71 [==============================] - 3s 49ms/step - loss: 0.0677 - accuracy: 0.9794 - val_loss: 0.2345 - val_accuracy: 0.9453
Epoch 100/100
71/71 [==============================] - 3s 47ms/step - loss: 0.0582 - accuracy: 0.9821 - val_loss: 0.2358 - val_accuracy: 0.9413
94/94 [==============================] - 0s 4ms/step - loss: 0.2274 - accuracy: 0.9417
CNN Error: 5.83%

The accuracy is about the same upon adding RandomFlip, hence we will not implement it.¶

Model 2 (After Augmentation) - Gaussian Noise¶

In [105]:
# Model 2
from tensorflow.keras.layers.experimental.preprocessing import Rescaling,RandomFlip
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D,GlobalAveragePooling2D,GaussianNoise
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.layers import Conv2D, BatchNormalization
from tensorflow.keras import regularizers
model = Sequential()
model.add(GaussianNoise(0.2,input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 15ms/step - loss: 2.6499 - accuracy: 0.0953 - val_loss: 2.7074 - val_accuracy: 0.0677
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.5694 - accuracy: 0.1253 - val_loss: 2.6990 - val_accuracy: 0.1160
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4079 - accuracy: 0.2069 - val_loss: 2.6327 - val_accuracy: 0.1360
Epoch 4/100
71/71 [==============================] - 1s 11ms/step - loss: 2.2392 - accuracy: 0.2573 - val_loss: 2.5746 - val_accuracy: 0.1703
Epoch 5/100
71/71 [==============================] - 1s 11ms/step - loss: 2.1382 - accuracy: 0.2995 - val_loss: 2.5190 - val_accuracy: 0.2170
Epoch 6/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0552 - accuracy: 0.3291 - val_loss: 2.4883 - val_accuracy: 0.2187
Epoch 7/100
71/71 [==============================] - 1s 11ms/step - loss: 2.0008 - accuracy: 0.3499 - val_loss: 2.5492 - val_accuracy: 0.1940
Epoch 8/100
71/71 [==============================] - 1s 10ms/step - loss: 1.8968 - accuracy: 0.3859 - val_loss: 2.4593 - val_accuracy: 0.2320
Epoch 9/100
71/71 [==============================] - 1s 11ms/step - loss: 1.8607 - accuracy: 0.4011 - val_loss: 2.5079 - val_accuracy: 0.2173
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7519 - accuracy: 0.4373 - val_loss: 2.5640 - val_accuracy: 0.2073
Epoch 11/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6703 - accuracy: 0.4569 - val_loss: 2.6074 - val_accuracy: 0.1883
Epoch 12/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6186 - accuracy: 0.4824 - val_loss: 2.5448 - val_accuracy: 0.2210
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 1.5696 - accuracy: 0.5012 - val_loss: 2.3759 - val_accuracy: 0.2513
Epoch 14/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4736 - accuracy: 0.5248 - val_loss: 2.6152 - val_accuracy: 0.2127
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 1.4122 - accuracy: 0.5493 - val_loss: 2.3917 - val_accuracy: 0.2750
Epoch 16/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3710 - accuracy: 0.5606 - val_loss: 2.3915 - val_accuracy: 0.3000
Epoch 17/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3222 - accuracy: 0.5764 - val_loss: 2.4341 - val_accuracy: 0.2723
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2772 - accuracy: 0.5898 - val_loss: 2.4113 - val_accuracy: 0.3190
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2243 - accuracy: 0.6088 - val_loss: 2.5876 - val_accuracy: 0.2780
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1852 - accuracy: 0.6196 - val_loss: 2.8509 - val_accuracy: 0.2423
Epoch 21/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1861 - accuracy: 0.6192 - val_loss: 2.4315 - val_accuracy: 0.3207
Epoch 22/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1385 - accuracy: 0.6368 - val_loss: 2.4595 - val_accuracy: 0.3197
Epoch 23/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0842 - accuracy: 0.6541 - val_loss: 2.3941 - val_accuracy: 0.3453
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0685 - accuracy: 0.6571 - val_loss: 2.4295 - val_accuracy: 0.3447
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0402 - accuracy: 0.6722 - val_loss: 2.6481 - val_accuracy: 0.3063
Epoch 26/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0048 - accuracy: 0.6779 - val_loss: 2.3599 - val_accuracy: 0.3733
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9870 - accuracy: 0.6766 - val_loss: 2.7062 - val_accuracy: 0.3010
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9875 - accuracy: 0.6886 - val_loss: 2.2198 - val_accuracy: 0.3827
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9409 - accuracy: 0.7060 - val_loss: 2.4944 - val_accuracy: 0.3513
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9053 - accuracy: 0.7078 - val_loss: 2.4725 - val_accuracy: 0.3740
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9076 - accuracy: 0.7113 - val_loss: 2.6415 - val_accuracy: 0.3467
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9123 - accuracy: 0.7127 - val_loss: 2.2641 - val_accuracy: 0.3983
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8713 - accuracy: 0.7243 - val_loss: 2.5348 - val_accuracy: 0.3430
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8545 - accuracy: 0.7282 - val_loss: 2.4908 - val_accuracy: 0.3783
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8395 - accuracy: 0.7348 - val_loss: 2.3874 - val_accuracy: 0.3940
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8219 - accuracy: 0.7329 - val_loss: 2.7127 - val_accuracy: 0.3323
Epoch 37/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7911 - accuracy: 0.7486 - val_loss: 2.3691 - val_accuracy: 0.4017
Epoch 38/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7893 - accuracy: 0.7480 - val_loss: 2.6372 - val_accuracy: 0.3547
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7798 - accuracy: 0.7483 - val_loss: 2.6237 - val_accuracy: 0.3663
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7832 - accuracy: 0.7561 - val_loss: 2.5043 - val_accuracy: 0.3810
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7417 - accuracy: 0.7632 - val_loss: 2.7125 - val_accuracy: 0.3693
Epoch 42/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7540 - accuracy: 0.7582 - val_loss: 2.4909 - val_accuracy: 0.3787
Epoch 43/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7394 - accuracy: 0.7637 - val_loss: 2.4470 - val_accuracy: 0.3887
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7230 - accuracy: 0.7705 - val_loss: 2.5745 - val_accuracy: 0.3630
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7290 - accuracy: 0.7647 - val_loss: 2.2601 - val_accuracy: 0.4137
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6906 - accuracy: 0.7777 - val_loss: 2.2947 - val_accuracy: 0.4110
Epoch 47/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6990 - accuracy: 0.7736 - val_loss: 2.5454 - val_accuracy: 0.3657
Epoch 48/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6799 - accuracy: 0.7808 - val_loss: 2.2775 - val_accuracy: 0.4287
Epoch 49/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6623 - accuracy: 0.7878 - val_loss: 2.6056 - val_accuracy: 0.3643
Epoch 50/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6727 - accuracy: 0.7849 - val_loss: 2.4585 - val_accuracy: 0.4027
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6741 - accuracy: 0.7847 - val_loss: 2.2154 - val_accuracy: 0.4530
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6371 - accuracy: 0.7952 - val_loss: 2.3171 - val_accuracy: 0.4323
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6447 - accuracy: 0.7930 - val_loss: 2.3735 - val_accuracy: 0.4333
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6663 - accuracy: 0.7818 - val_loss: 1.9901 - val_accuracy: 0.4757
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6348 - accuracy: 0.7953 - val_loss: 2.1716 - val_accuracy: 0.4537
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6102 - accuracy: 0.8051 - val_loss: 2.3640 - val_accuracy: 0.4170
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6159 - accuracy: 0.7979 - val_loss: 2.2544 - val_accuracy: 0.4410
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6021 - accuracy: 0.8084 - val_loss: 2.2281 - val_accuracy: 0.4523
Epoch 59/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5968 - accuracy: 0.8082 - val_loss: 2.5730 - val_accuracy: 0.3990
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6023 - accuracy: 0.8058 - val_loss: 2.2787 - val_accuracy: 0.4463
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5930 - accuracy: 0.8135 - val_loss: 2.0946 - val_accuracy: 0.4730
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5865 - accuracy: 0.8114 - val_loss: 2.4930 - val_accuracy: 0.4023
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5831 - accuracy: 0.8172 - val_loss: 2.1865 - val_accuracy: 0.4540
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5882 - accuracy: 0.8146 - val_loss: 2.3104 - val_accuracy: 0.4487
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5476 - accuracy: 0.8248 - val_loss: 2.2969 - val_accuracy: 0.4463
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5484 - accuracy: 0.8286 - val_loss: 2.4530 - val_accuracy: 0.4297
Epoch 67/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5498 - accuracy: 0.8212 - val_loss: 2.1838 - val_accuracy: 0.4647
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5603 - accuracy: 0.8216 - val_loss: 2.1711 - val_accuracy: 0.4603
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5369 - accuracy: 0.8249 - val_loss: 2.2352 - val_accuracy: 0.4477
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5586 - accuracy: 0.8196 - val_loss: 1.9561 - val_accuracy: 0.4807
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5389 - accuracy: 0.8301 - val_loss: 2.2028 - val_accuracy: 0.4530
Epoch 72/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5176 - accuracy: 0.8346 - val_loss: 2.0643 - val_accuracy: 0.4670
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5062 - accuracy: 0.8344 - val_loss: 2.3587 - val_accuracy: 0.4383
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5217 - accuracy: 0.8320 - val_loss: 2.6017 - val_accuracy: 0.3947
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5341 - accuracy: 0.8321 - val_loss: 2.2658 - val_accuracy: 0.4343
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5214 - accuracy: 0.8274 - val_loss: 2.4145 - val_accuracy: 0.4253
Epoch 77/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5145 - accuracy: 0.8323 - val_loss: 2.3655 - val_accuracy: 0.4373
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5245 - accuracy: 0.8281 - val_loss: 2.3283 - val_accuracy: 0.4367
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5070 - accuracy: 0.8348 - val_loss: 2.4871 - val_accuracy: 0.4107
Epoch 80/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5081 - accuracy: 0.8397 - val_loss: 2.4763 - val_accuracy: 0.4183
Epoch 81/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4829 - accuracy: 0.8450 - val_loss: 2.0457 - val_accuracy: 0.4740
Epoch 82/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4838 - accuracy: 0.8398 - val_loss: 2.1399 - val_accuracy: 0.4700
Epoch 83/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4951 - accuracy: 0.8377 - val_loss: 2.2305 - val_accuracy: 0.4457
Epoch 84/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4857 - accuracy: 0.8428 - val_loss: 2.0490 - val_accuracy: 0.4813
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4830 - accuracy: 0.8423 - val_loss: 2.2133 - val_accuracy: 0.4723
Epoch 86/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4988 - accuracy: 0.8404 - val_loss: 2.1927 - val_accuracy: 0.4633
Epoch 87/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4946 - accuracy: 0.8374 - val_loss: 2.4861 - val_accuracy: 0.4043
Epoch 88/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4629 - accuracy: 0.8496 - val_loss: 2.5507 - val_accuracy: 0.4083
Epoch 89/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4707 - accuracy: 0.8478 - val_loss: 2.3687 - val_accuracy: 0.4440
Epoch 90/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4615 - accuracy: 0.8480 - val_loss: 2.5285 - val_accuracy: 0.4243
Epoch 91/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4881 - accuracy: 0.8455 - val_loss: 2.3600 - val_accuracy: 0.4330
Epoch 92/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4917 - accuracy: 0.8434 - val_loss: 2.3062 - val_accuracy: 0.4367
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4710 - accuracy: 0.8525 - val_loss: 2.1315 - val_accuracy: 0.4757
Epoch 94/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4765 - accuracy: 0.8465 - val_loss: 2.2069 - val_accuracy: 0.4707
Epoch 95/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4593 - accuracy: 0.8552 - val_loss: 2.5172 - val_accuracy: 0.4183
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4453 - accuracy: 0.8564 - val_loss: 2.2245 - val_accuracy: 0.4640
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4506 - accuracy: 0.8509 - val_loss: 2.2992 - val_accuracy: 0.4553
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4587 - accuracy: 0.8541 - val_loss: 2.1410 - val_accuracy: 0.4723
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4557 - accuracy: 0.8560 - val_loss: 2.2545 - val_accuracy: 0.4420
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4363 - accuracy: 0.8623 - val_loss: 2.2337 - val_accuracy: 0.4570
94/94 [==============================] - 0s 4ms/step - loss: 2.2035 - accuracy: 0.4587
CNN Error: 54.13%

Gaussian Noise decreased my accuracy score significantly,hence we will not implement it.¶

Model 3 (Before Augmentation)¶

In [106]:
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 19ms/step - loss: 2.6266 - accuracy: 0.0991 - val_loss: 2.6006 - val_accuracy: 0.0883
Epoch 2/100
71/71 [==============================] - 1s 16ms/step - loss: 2.4684 - accuracy: 0.1380 - val_loss: 2.3833 - val_accuracy: 0.1877
Epoch 3/100
71/71 [==============================] - 1s 16ms/step - loss: 2.3142 - accuracy: 0.2017 - val_loss: 2.2416 - val_accuracy: 0.2497
Epoch 4/100
71/71 [==============================] - 1s 16ms/step - loss: 2.1313 - accuracy: 0.2815 - val_loss: 2.0285 - val_accuracy: 0.3077
Epoch 5/100
71/71 [==============================] - 1s 16ms/step - loss: 1.9239 - accuracy: 0.3514 - val_loss: 1.7508 - val_accuracy: 0.4243
Epoch 6/100
71/71 [==============================] - 1s 16ms/step - loss: 1.7304 - accuracy: 0.4341 - val_loss: 1.5757 - val_accuracy: 0.4863
Epoch 7/100
71/71 [==============================] - 1s 16ms/step - loss: 1.5829 - accuracy: 0.4757 - val_loss: 1.4351 - val_accuracy: 0.5303
Epoch 8/100
71/71 [==============================] - 1s 15ms/step - loss: 1.4212 - accuracy: 0.5343 - val_loss: 1.2502 - val_accuracy: 0.6127
Epoch 9/100
71/71 [==============================] - 1s 16ms/step - loss: 1.3252 - accuracy: 0.5678 - val_loss: 1.4650 - val_accuracy: 0.5310
Epoch 10/100
71/71 [==============================] - 1s 16ms/step - loss: 1.2150 - accuracy: 0.6021 - val_loss: 1.1625 - val_accuracy: 0.6190
Epoch 11/100
71/71 [==============================] - 1s 15ms/step - loss: 1.1364 - accuracy: 0.6330 - val_loss: 1.0021 - val_accuracy: 0.6983
Epoch 12/100
71/71 [==============================] - 1s 15ms/step - loss: 1.0541 - accuracy: 0.6680 - val_loss: 0.9999 - val_accuracy: 0.6913
Epoch 13/100
71/71 [==============================] - 1s 15ms/step - loss: 0.9811 - accuracy: 0.6823 - val_loss: 0.9800 - val_accuracy: 0.6923
Epoch 14/100
71/71 [==============================] - 1s 16ms/step - loss: 0.8831 - accuracy: 0.7229 - val_loss: 0.7664 - val_accuracy: 0.7610
Epoch 15/100
71/71 [==============================] - 1s 16ms/step - loss: 0.8133 - accuracy: 0.7367 - val_loss: 0.7967 - val_accuracy: 0.7563
Epoch 16/100
71/71 [==============================] - 1s 16ms/step - loss: 0.7432 - accuracy: 0.7636 - val_loss: 0.7186 - val_accuracy: 0.7703
Epoch 17/100
71/71 [==============================] - 1s 16ms/step - loss: 0.7099 - accuracy: 0.7726 - val_loss: 0.6533 - val_accuracy: 0.8030
Epoch 18/100
71/71 [==============================] - 1s 16ms/step - loss: 0.6797 - accuracy: 0.7830 - val_loss: 0.7054 - val_accuracy: 0.7723
Epoch 19/100
71/71 [==============================] - 1s 16ms/step - loss: 0.6284 - accuracy: 0.7983 - val_loss: 0.7143 - val_accuracy: 0.7733
Epoch 20/100
71/71 [==============================] - 1s 16ms/step - loss: 0.6365 - accuracy: 0.8015 - val_loss: 0.5660 - val_accuracy: 0.8280
Epoch 21/100
71/71 [==============================] - 1s 16ms/step - loss: 0.5683 - accuracy: 0.8162 - val_loss: 0.5402 - val_accuracy: 0.8347
Epoch 22/100
71/71 [==============================] - 1s 16ms/step - loss: 0.5113 - accuracy: 0.8385 - val_loss: 0.5301 - val_accuracy: 0.8367
Epoch 23/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4796 - accuracy: 0.8461 - val_loss: 0.5264 - val_accuracy: 0.8420
Epoch 24/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4551 - accuracy: 0.8581 - val_loss: 0.5380 - val_accuracy: 0.8370
Epoch 25/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4305 - accuracy: 0.8630 - val_loss: 0.4861 - val_accuracy: 0.8587
Epoch 26/100
71/71 [==============================] - 1s 15ms/step - loss: 0.4101 - accuracy: 0.8716 - val_loss: 0.4614 - val_accuracy: 0.8660
Epoch 27/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3992 - accuracy: 0.8762 - val_loss: 0.4787 - val_accuracy: 0.8623
Epoch 28/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3636 - accuracy: 0.8803 - val_loss: 0.4935 - val_accuracy: 0.8607
Epoch 29/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3437 - accuracy: 0.8882 - val_loss: 0.5184 - val_accuracy: 0.8447
Epoch 30/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3511 - accuracy: 0.8876 - val_loss: 0.3981 - val_accuracy: 0.8840
Epoch 31/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3211 - accuracy: 0.9014 - val_loss: 0.4512 - val_accuracy: 0.8703
Epoch 32/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3221 - accuracy: 0.8973 - val_loss: 0.5520 - val_accuracy: 0.8523
Epoch 33/100
71/71 [==============================] - 1s 15ms/step - loss: 0.3320 - accuracy: 0.8982 - val_loss: 0.4283 - val_accuracy: 0.8793
Epoch 34/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2786 - accuracy: 0.9082 - val_loss: 0.4080 - val_accuracy: 0.8857
Epoch 35/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2808 - accuracy: 0.9132 - val_loss: 0.4385 - val_accuracy: 0.8810
Epoch 36/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2655 - accuracy: 0.9156 - val_loss: 0.4364 - val_accuracy: 0.8820
Epoch 37/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2598 - accuracy: 0.9155 - val_loss: 0.3888 - val_accuracy: 0.9027
Epoch 38/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2202 - accuracy: 0.9283 - val_loss: 0.3983 - val_accuracy: 0.8943
Epoch 39/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2391 - accuracy: 0.9230 - val_loss: 0.4096 - val_accuracy: 0.8917
Epoch 40/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2175 - accuracy: 0.9327 - val_loss: 0.4265 - val_accuracy: 0.8897
Epoch 41/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2123 - accuracy: 0.9322 - val_loss: 0.4846 - val_accuracy: 0.8847
Epoch 42/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2491 - accuracy: 0.9236 - val_loss: 0.3954 - val_accuracy: 0.8983
Epoch 43/100
71/71 [==============================] - 1s 15ms/step - loss: 0.2101 - accuracy: 0.9356 - val_loss: 0.4137 - val_accuracy: 0.8947
Epoch 44/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2025 - accuracy: 0.9349 - val_loss: 0.4301 - val_accuracy: 0.8977
Epoch 45/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2138 - accuracy: 0.9356 - val_loss: 0.4024 - val_accuracy: 0.9030
Epoch 46/100
71/71 [==============================] - 1s 16ms/step - loss: 0.2084 - accuracy: 0.9361 - val_loss: 0.4113 - val_accuracy: 0.8933
Epoch 47/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1735 - accuracy: 0.9449 - val_loss: 0.4240 - val_accuracy: 0.9007
Epoch 48/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1788 - accuracy: 0.9455 - val_loss: 0.3792 - val_accuracy: 0.9040
Epoch 49/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1635 - accuracy: 0.9490 - val_loss: 0.4182 - val_accuracy: 0.8983
Epoch 50/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1690 - accuracy: 0.9478 - val_loss: 0.4176 - val_accuracy: 0.8943
Epoch 51/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1433 - accuracy: 0.9560 - val_loss: 0.4378 - val_accuracy: 0.8980
Epoch 52/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1490 - accuracy: 0.9555 - val_loss: 0.4143 - val_accuracy: 0.9053
Epoch 53/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1616 - accuracy: 0.9515 - val_loss: 0.4057 - val_accuracy: 0.9033
Epoch 54/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1519 - accuracy: 0.9548 - val_loss: 0.4613 - val_accuracy: 0.8970
Epoch 55/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1455 - accuracy: 0.9570 - val_loss: 0.4009 - val_accuracy: 0.9067
Epoch 56/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1652 - accuracy: 0.9502 - val_loss: 0.3852 - val_accuracy: 0.9020
Epoch 57/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1409 - accuracy: 0.9572 - val_loss: 0.3893 - val_accuracy: 0.9047
Epoch 58/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1332 - accuracy: 0.9574 - val_loss: 0.4359 - val_accuracy: 0.9053
Epoch 59/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1386 - accuracy: 0.9587 - val_loss: 0.3881 - val_accuracy: 0.9127
Epoch 60/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1384 - accuracy: 0.9592 - val_loss: 0.3629 - val_accuracy: 0.9133
Epoch 61/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1474 - accuracy: 0.9555 - val_loss: 0.3799 - val_accuracy: 0.9110
Epoch 62/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1395 - accuracy: 0.9606 - val_loss: 0.3797 - val_accuracy: 0.9037
Epoch 63/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1174 - accuracy: 0.9638 - val_loss: 0.3761 - val_accuracy: 0.9113
Epoch 64/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1423 - accuracy: 0.9560 - val_loss: 0.4054 - val_accuracy: 0.9080
Epoch 65/100
71/71 [==============================] - 1s 16ms/step - loss: 0.1164 - accuracy: 0.9641 - val_loss: 0.4000 - val_accuracy: 0.9093
Epoch 66/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1214 - accuracy: 0.9633 - val_loss: 0.4261 - val_accuracy: 0.9047
Epoch 67/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1175 - accuracy: 0.9630 - val_loss: 0.4004 - val_accuracy: 0.9103
Epoch 68/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1426 - accuracy: 0.9548 - val_loss: 0.4091 - val_accuracy: 0.9037
Epoch 69/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1154 - accuracy: 0.9668 - val_loss: 0.4341 - val_accuracy: 0.9000
Epoch 70/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1119 - accuracy: 0.9662 - val_loss: 0.4321 - val_accuracy: 0.9107
Epoch 71/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1227 - accuracy: 0.9630 - val_loss: 0.4644 - val_accuracy: 0.8997
Epoch 72/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1197 - accuracy: 0.9639 - val_loss: 0.3845 - val_accuracy: 0.9100
Epoch 73/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0915 - accuracy: 0.9712 - val_loss: 0.4377 - val_accuracy: 0.9060
Epoch 74/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1022 - accuracy: 0.9692 - val_loss: 0.4480 - val_accuracy: 0.9087
Epoch 75/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1030 - accuracy: 0.9675 - val_loss: 0.4113 - val_accuracy: 0.9157
Epoch 76/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0985 - accuracy: 0.9690 - val_loss: 0.4500 - val_accuracy: 0.9093
Epoch 77/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0945 - accuracy: 0.9716 - val_loss: 0.4197 - val_accuracy: 0.9127
Epoch 78/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1166 - accuracy: 0.9644 - val_loss: 0.4911 - val_accuracy: 0.8947
Epoch 79/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0936 - accuracy: 0.9710 - val_loss: 0.4318 - val_accuracy: 0.9067
Epoch 80/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0874 - accuracy: 0.9721 - val_loss: 0.4064 - val_accuracy: 0.9170
Epoch 81/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0997 - accuracy: 0.9693 - val_loss: 0.3881 - val_accuracy: 0.9190
Epoch 82/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1017 - accuracy: 0.9699 - val_loss: 0.3952 - val_accuracy: 0.9177
Epoch 83/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0917 - accuracy: 0.9699 - val_loss: 0.4274 - val_accuracy: 0.9047
Epoch 84/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1033 - accuracy: 0.9694 - val_loss: 0.5210 - val_accuracy: 0.8940
Epoch 85/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1093 - accuracy: 0.9674 - val_loss: 0.4183 - val_accuracy: 0.9080
Epoch 86/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0853 - accuracy: 0.9729 - val_loss: 0.4312 - val_accuracy: 0.9120
Epoch 87/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1159 - accuracy: 0.9658 - val_loss: 0.4119 - val_accuracy: 0.9033
Epoch 88/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1023 - accuracy: 0.9700 - val_loss: 0.3895 - val_accuracy: 0.9157
Epoch 89/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1007 - accuracy: 0.9700 - val_loss: 0.3587 - val_accuracy: 0.9243
Epoch 90/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0869 - accuracy: 0.9750 - val_loss: 0.4275 - val_accuracy: 0.8990
Epoch 91/100
71/71 [==============================] - 1s 16ms/step - loss: 0.0912 - accuracy: 0.9741 - val_loss: 0.4146 - val_accuracy: 0.9083
Epoch 92/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0829 - accuracy: 0.9735 - val_loss: 0.4542 - val_accuracy: 0.9070
Epoch 93/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0892 - accuracy: 0.9740 - val_loss: 0.4325 - val_accuracy: 0.9083
Epoch 94/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0840 - accuracy: 0.9750 - val_loss: 0.4814 - val_accuracy: 0.9017
Epoch 95/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0849 - accuracy: 0.9757 - val_loss: 0.5620 - val_accuracy: 0.8937
Epoch 96/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0771 - accuracy: 0.9764 - val_loss: 0.4186 - val_accuracy: 0.9113
Epoch 97/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0674 - accuracy: 0.9773 - val_loss: 0.4783 - val_accuracy: 0.9040
Epoch 98/100
71/71 [==============================] - 1s 15ms/step - loss: 0.1023 - accuracy: 0.9689 - val_loss: 0.4150 - val_accuracy: 0.9147
Epoch 99/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0882 - accuracy: 0.9734 - val_loss: 0.5038 - val_accuracy: 0.9003
Epoch 100/100
71/71 [==============================] - 1s 15ms/step - loss: 0.0895 - accuracy: 0.9713 - val_loss: 0.4232 - val_accuracy: 0.9083
94/94 [==============================] - 0s 3ms/step - loss: 0.3764 - accuracy: 0.9077
CNN Error: 9.23%

Model 3 (After Augmentation) - Random Flip¶

In [107]:
# Model 2 Comments 
# Reduce Dropout
from tensorflow.keras.layers.experimental.preprocessing import Rescaling
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D,GlobalAveragePooling2D
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.layers import Conv2D, BatchNormalization
from tensorflow.keras import regularizers
model = Sequential()
model.add(RandomFlip('horizontal',input_shape=(31,31,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 4s 46ms/step - loss: 2.6266 - accuracy: 0.0918 - val_loss: 2.6407 - val_accuracy: 0.0737
Epoch 2/100
71/71 [==============================] - 3s 46ms/step - loss: 2.5095 - accuracy: 0.1220 - val_loss: 2.4914 - val_accuracy: 0.1727
Epoch 3/100
71/71 [==============================] - 3s 44ms/step - loss: 2.3833 - accuracy: 0.1704 - val_loss: 2.4436 - val_accuracy: 0.1750
Epoch 4/100
71/71 [==============================] - 3s 44ms/step - loss: 2.2263 - accuracy: 0.2424 - val_loss: 2.1463 - val_accuracy: 0.3110
Epoch 5/100
71/71 [==============================] - 3s 44ms/step - loss: 2.0530 - accuracy: 0.3074 - val_loss: 1.8839 - val_accuracy: 0.3757
Epoch 6/100
71/71 [==============================] - 3s 43ms/step - loss: 1.8097 - accuracy: 0.4065 - val_loss: 1.7414 - val_accuracy: 0.4307
Epoch 7/100
71/71 [==============================] - 3s 45ms/step - loss: 1.6570 - accuracy: 0.4578 - val_loss: 1.5570 - val_accuracy: 0.4907
Epoch 8/100
71/71 [==============================] - 3s 45ms/step - loss: 1.4753 - accuracy: 0.5205 - val_loss: 1.4697 - val_accuracy: 0.5360
Epoch 9/100
71/71 [==============================] - 3s 47ms/step - loss: 1.3592 - accuracy: 0.5545 - val_loss: 1.1329 - val_accuracy: 0.6400
Epoch 10/100
71/71 [==============================] - 3s 44ms/step - loss: 1.2548 - accuracy: 0.5932 - val_loss: 1.1022 - val_accuracy: 0.6563
Epoch 11/100
71/71 [==============================] - 3s 46ms/step - loss: 1.1648 - accuracy: 0.6247 - val_loss: 1.1140 - val_accuracy: 0.6530
Epoch 12/100
71/71 [==============================] - 3s 45ms/step - loss: 1.0834 - accuracy: 0.6514 - val_loss: 0.9459 - val_accuracy: 0.7017
Epoch 13/100
71/71 [==============================] - 3s 45ms/step - loss: 0.9693 - accuracy: 0.6901 - val_loss: 0.8820 - val_accuracy: 0.7140
Epoch 14/100
71/71 [==============================] - 3s 43ms/step - loss: 0.9536 - accuracy: 0.6964 - val_loss: 0.8084 - val_accuracy: 0.7603
Epoch 15/100
71/71 [==============================] - 3s 44ms/step - loss: 0.8304 - accuracy: 0.7306 - val_loss: 0.7038 - val_accuracy: 0.7903
Epoch 16/100
71/71 [==============================] - 3s 44ms/step - loss: 0.7714 - accuracy: 0.7503 - val_loss: 0.6870 - val_accuracy: 0.7873
Epoch 17/100
71/71 [==============================] - 3s 46ms/step - loss: 0.7263 - accuracy: 0.7672 - val_loss: 0.6408 - val_accuracy: 0.8060
Epoch 18/100
71/71 [==============================] - 3s 48ms/step - loss: 0.6920 - accuracy: 0.7809 - val_loss: 0.5891 - val_accuracy: 0.8180
Epoch 19/100
71/71 [==============================] - 3s 47ms/step - loss: 0.6768 - accuracy: 0.7846 - val_loss: 0.7323 - val_accuracy: 0.7603
Epoch 20/100
71/71 [==============================] - 3s 47ms/step - loss: 0.6035 - accuracy: 0.8074 - val_loss: 0.5547 - val_accuracy: 0.8313
Epoch 21/100
71/71 [==============================] - 3s 48ms/step - loss: 0.5750 - accuracy: 0.8149 - val_loss: 0.5869 - val_accuracy: 0.8113
Epoch 22/100
71/71 [==============================] - 3s 48ms/step - loss: 0.5597 - accuracy: 0.8255 - val_loss: 0.4969 - val_accuracy: 0.8497
Epoch 23/100
71/71 [==============================] - 3s 46ms/step - loss: 0.4967 - accuracy: 0.8442 - val_loss: 0.4758 - val_accuracy: 0.8580
Epoch 24/100
71/71 [==============================] - 3s 46ms/step - loss: 0.4800 - accuracy: 0.8504 - val_loss: 0.5441 - val_accuracy: 0.8397
Epoch 25/100
71/71 [==============================] - 3s 45ms/step - loss: 0.4626 - accuracy: 0.8559 - val_loss: 0.4508 - val_accuracy: 0.8587
Epoch 26/100
71/71 [==============================] - 3s 45ms/step - loss: 0.4278 - accuracy: 0.8625 - val_loss: 0.4654 - val_accuracy: 0.8587
Epoch 27/100
71/71 [==============================] - 3s 47ms/step - loss: 0.4201 - accuracy: 0.8672 - val_loss: 0.4545 - val_accuracy: 0.8603
Epoch 28/100
71/71 [==============================] - 3s 45ms/step - loss: 0.3993 - accuracy: 0.8722 - val_loss: 0.4602 - val_accuracy: 0.8647
Epoch 29/100
71/71 [==============================] - 3s 46ms/step - loss: 0.3887 - accuracy: 0.8749 - val_loss: 0.4811 - val_accuracy: 0.8603
Epoch 30/100
71/71 [==============================] - 3s 47ms/step - loss: 0.3668 - accuracy: 0.8831 - val_loss: 0.4173 - val_accuracy: 0.8753
Epoch 31/100
71/71 [==============================] - 4s 50ms/step - loss: 0.3550 - accuracy: 0.8850 - val_loss: 0.4073 - val_accuracy: 0.8820
Epoch 32/100
71/71 [==============================] - 3s 48ms/step - loss: 0.3411 - accuracy: 0.8920 - val_loss: 0.4111 - val_accuracy: 0.8860
Epoch 33/100
71/71 [==============================] - 3s 47ms/step - loss: 0.3342 - accuracy: 0.8900 - val_loss: 0.3691 - val_accuracy: 0.8957
Epoch 34/100
71/71 [==============================] - 3s 45ms/step - loss: 0.3113 - accuracy: 0.9051 - val_loss: 0.3920 - val_accuracy: 0.8857
Epoch 35/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2896 - accuracy: 0.9083 - val_loss: 0.4045 - val_accuracy: 0.8817
Epoch 36/100
71/71 [==============================] - 3s 49ms/step - loss: 0.2735 - accuracy: 0.9147 - val_loss: 0.3671 - val_accuracy: 0.8967
Epoch 37/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2534 - accuracy: 0.9174 - val_loss: 0.5497 - val_accuracy: 0.8550
Epoch 38/100
71/71 [==============================] - 3s 47ms/step - loss: 0.2603 - accuracy: 0.9191 - val_loss: 0.3743 - val_accuracy: 0.8970
Epoch 39/100
71/71 [==============================] - 4s 49ms/step - loss: 0.2359 - accuracy: 0.9273 - val_loss: 0.4286 - val_accuracy: 0.8857
Epoch 40/100
71/71 [==============================] - 3s 47ms/step - loss: 0.2573 - accuracy: 0.9174 - val_loss: 0.3560 - val_accuracy: 0.8960
Epoch 41/100
71/71 [==============================] - 4s 50ms/step - loss: 0.2254 - accuracy: 0.9259 - val_loss: 0.3892 - val_accuracy: 0.8957
Epoch 42/100
71/71 [==============================] - 3s 47ms/step - loss: 0.2169 - accuracy: 0.9313 - val_loss: 0.3721 - val_accuracy: 0.9023
Epoch 43/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2121 - accuracy: 0.9312 - val_loss: 0.3642 - val_accuracy: 0.8983
Epoch 44/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2013 - accuracy: 0.9353 - val_loss: 0.4161 - val_accuracy: 0.8880
Epoch 45/100
71/71 [==============================] - 3s 48ms/step - loss: 0.2130 - accuracy: 0.9334 - val_loss: 0.3631 - val_accuracy: 0.9000
Epoch 46/100
71/71 [==============================] - 3s 47ms/step - loss: 0.2141 - accuracy: 0.9332 - val_loss: 0.3693 - val_accuracy: 0.9057
Epoch 47/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1892 - accuracy: 0.9392 - val_loss: 0.3820 - val_accuracy: 0.9020
Epoch 48/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1847 - accuracy: 0.9410 - val_loss: 0.3818 - val_accuracy: 0.9030
Epoch 49/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1995 - accuracy: 0.9366 - val_loss: 0.3497 - val_accuracy: 0.9140
Epoch 50/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1864 - accuracy: 0.9401 - val_loss: 0.3907 - val_accuracy: 0.8987
Epoch 51/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1607 - accuracy: 0.9507 - val_loss: 0.3676 - val_accuracy: 0.9087
Epoch 52/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1814 - accuracy: 0.9423 - val_loss: 0.4164 - val_accuracy: 0.8987
Epoch 53/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1891 - accuracy: 0.9395 - val_loss: 0.3699 - val_accuracy: 0.9073
Epoch 54/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1699 - accuracy: 0.9466 - val_loss: 0.3691 - val_accuracy: 0.9057
Epoch 55/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1677 - accuracy: 0.9493 - val_loss: 0.3664 - val_accuracy: 0.9063
Epoch 56/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1499 - accuracy: 0.9535 - val_loss: 0.3752 - val_accuracy: 0.9070
Epoch 57/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1712 - accuracy: 0.9476 - val_loss: 0.4041 - val_accuracy: 0.9007
Epoch 58/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1429 - accuracy: 0.9549 - val_loss: 0.3863 - val_accuracy: 0.9103
Epoch 59/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1415 - accuracy: 0.9560 - val_loss: 0.3542 - val_accuracy: 0.9143
Epoch 60/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1413 - accuracy: 0.9564 - val_loss: 0.3961 - val_accuracy: 0.9060
Epoch 61/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1439 - accuracy: 0.9561 - val_loss: 0.3501 - val_accuracy: 0.9123
Epoch 62/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1237 - accuracy: 0.9612 - val_loss: 0.3976 - val_accuracy: 0.9050
Epoch 63/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1273 - accuracy: 0.9598 - val_loss: 0.4601 - val_accuracy: 0.8893
Epoch 64/100
71/71 [==============================] - 3s 44ms/step - loss: 0.1835 - accuracy: 0.9430 - val_loss: 0.3680 - val_accuracy: 0.9087
Epoch 65/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1290 - accuracy: 0.9596 - val_loss: 0.3547 - val_accuracy: 0.9160
Epoch 66/100
71/71 [==============================] - 4s 50ms/step - loss: 0.1109 - accuracy: 0.9652 - val_loss: 0.4116 - val_accuracy: 0.9077
Epoch 67/100
71/71 [==============================] - 3s 48ms/step - loss: 0.1273 - accuracy: 0.9628 - val_loss: 0.3757 - val_accuracy: 0.9150
Epoch 68/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1221 - accuracy: 0.9637 - val_loss: 0.3643 - val_accuracy: 0.9173
Epoch 69/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1224 - accuracy: 0.9650 - val_loss: 0.3916 - val_accuracy: 0.9073
Epoch 70/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1142 - accuracy: 0.9650 - val_loss: 0.3748 - val_accuracy: 0.9110
Epoch 71/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1135 - accuracy: 0.9648 - val_loss: 0.4204 - val_accuracy: 0.9043
Epoch 72/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1332 - accuracy: 0.9607 - val_loss: 0.3665 - val_accuracy: 0.9110
Epoch 73/100
71/71 [==============================] - 3s 44ms/step - loss: 0.1155 - accuracy: 0.9657 - val_loss: 0.4259 - val_accuracy: 0.9057
Epoch 74/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1354 - accuracy: 0.9566 - val_loss: 0.4287 - val_accuracy: 0.9013
Epoch 75/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1153 - accuracy: 0.9619 - val_loss: 0.3667 - val_accuracy: 0.9143
Epoch 76/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1085 - accuracy: 0.9662 - val_loss: 0.4023 - val_accuracy: 0.9083
Epoch 77/100
71/71 [==============================] - 3s 49ms/step - loss: 0.1219 - accuracy: 0.9630 - val_loss: 0.3633 - val_accuracy: 0.9147
Epoch 78/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1287 - accuracy: 0.9605 - val_loss: 0.3538 - val_accuracy: 0.9157
Epoch 79/100
71/71 [==============================] - 3s 45ms/step - loss: 0.0868 - accuracy: 0.9732 - val_loss: 0.3544 - val_accuracy: 0.9223
Epoch 80/100
71/71 [==============================] - 3s 44ms/step - loss: 0.0881 - accuracy: 0.9731 - val_loss: 0.3622 - val_accuracy: 0.9223
Epoch 81/100
71/71 [==============================] - 3s 43ms/step - loss: 0.1097 - accuracy: 0.9663 - val_loss: 0.4011 - val_accuracy: 0.9113
Epoch 82/100
71/71 [==============================] - 3s 45ms/step - loss: 0.1138 - accuracy: 0.9644 - val_loss: 0.4104 - val_accuracy: 0.9097
Epoch 83/100
71/71 [==============================] - 3s 44ms/step - loss: 0.1323 - accuracy: 0.9609 - val_loss: 0.3857 - val_accuracy: 0.9127
Epoch 84/100
71/71 [==============================] - 3s 47ms/step - loss: 0.1104 - accuracy: 0.9657 - val_loss: 0.3849 - val_accuracy: 0.9117
Epoch 85/100
71/71 [==============================] - 3s 47ms/step - loss: 0.0957 - accuracy: 0.9702 - val_loss: 0.3521 - val_accuracy: 0.9230
Epoch 86/100
71/71 [==============================] - 3s 47ms/step - loss: 0.0954 - accuracy: 0.9693 - val_loss: 0.4114 - val_accuracy: 0.9143
Epoch 87/100
71/71 [==============================] - 3s 46ms/step - loss: 0.0915 - accuracy: 0.9724 - val_loss: 0.4031 - val_accuracy: 0.9173
Epoch 88/100
71/71 [==============================] - 3s 48ms/step - loss: 0.0738 - accuracy: 0.9763 - val_loss: 0.3658 - val_accuracy: 0.9257
Epoch 89/100
71/71 [==============================] - 3s 46ms/step - loss: 0.0830 - accuracy: 0.9740 - val_loss: 0.3800 - val_accuracy: 0.9190
Epoch 90/100
71/71 [==============================] - 3s 44ms/step - loss: 0.0692 - accuracy: 0.9822 - val_loss: 0.3630 - val_accuracy: 0.9250
Epoch 91/100
71/71 [==============================] - 3s 46ms/step - loss: 0.1123 - accuracy: 0.9679 - val_loss: 0.4119 - val_accuracy: 0.9097
Epoch 92/100
71/71 [==============================] - 3s 45ms/step - loss: 0.0841 - accuracy: 0.9736 - val_loss: 0.3848 - val_accuracy: 0.9200
Epoch 93/100
71/71 [==============================] - 3s 44ms/step - loss: 0.0737 - accuracy: 0.9771 - val_loss: 0.3651 - val_accuracy: 0.9207
Epoch 94/100
71/71 [==============================] - 3s 45ms/step - loss: 0.0924 - accuracy: 0.9703 - val_loss: 0.3654 - val_accuracy: 0.9193
Epoch 95/100
71/71 [==============================] - 3s 45ms/step - loss: 0.0796 - accuracy: 0.9749 - val_loss: 0.4243 - val_accuracy: 0.9133
Epoch 96/100
71/71 [==============================] - 3s 43ms/step - loss: 0.0934 - accuracy: 0.9703 - val_loss: 0.3833 - val_accuracy: 0.9203
Epoch 97/100
71/71 [==============================] - 3s 44ms/step - loss: 0.0701 - accuracy: 0.9790 - val_loss: 0.3537 - val_accuracy: 0.9187
Epoch 98/100
71/71 [==============================] - 3s 46ms/step - loss: 0.0944 - accuracy: 0.9733 - val_loss: 0.4420 - val_accuracy: 0.9153
Epoch 99/100
71/71 [==============================] - 3s 44ms/step - loss: 0.1080 - accuracy: 0.9665 - val_loss: 0.3952 - val_accuracy: 0.9060
Epoch 100/100
71/71 [==============================] - 3s 45ms/step - loss: 0.0826 - accuracy: 0.9741 - val_loss: 0.4259 - val_accuracy: 0.9140
94/94 [==============================] - 0s 4ms/step - loss: 0.3778 - accuracy: 0.9180
CNN Error: 8.20%

Random Flip improved model 3 accuracy by only 1%, however the training time has also increased x2 times. Upon weighing the trade off between time and accuracy, we will not implement it.¶

From the results above, data augmentation is not as effective. Thus we will not implement it¶

Model Improvement¶

We will further improve model 2 as it has a higher test and validation accuracy than model 3

1.Compare Activation Functions
2. Tuning Hyper-parameters

In [108]:
def getModel(activation):
    model = Sequential()

    model.add(Conv2D(64, (3, 3), activation=activation,input_shape=(31,31,1)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(128, (3, 3), activation=activation))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(256, (3, 3), activation=activation))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))


    model.add(Flatten())

    model.add(Dense(512, activation=activation))
    model.add(Dropout(0.5))

    model.add(Dense(256, activation=activation))
    model.add(Dropout(0.5))

    model.add(Dense(15,activation='softmax'))
    return model

Comparing Activation Functions¶

In [109]:
activations = ['elu','tanh','relu','sigmoid']

results = {}

for function in activations:
    model = getModel(function)
    model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
    history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)
    results[function] = history
Epoch 1/100
71/71 [==============================] - 2s 15ms/step - loss: 2.3924 - accuracy: 0.2054 - val_loss: 2.2632 - val_accuracy: 0.2643
Epoch 2/100
71/71 [==============================] - 1s 11ms/step - loss: 1.8901 - accuracy: 0.3907 - val_loss: 1.9283 - val_accuracy: 0.3507
Epoch 3/100
71/71 [==============================] - 1s 11ms/step - loss: 1.6325 - accuracy: 0.4761 - val_loss: 1.6765 - val_accuracy: 0.4513
Epoch 4/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4567 - accuracy: 0.5349 - val_loss: 1.3882 - val_accuracy: 0.5610
Epoch 5/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2877 - accuracy: 0.5894 - val_loss: 1.1759 - val_accuracy: 0.6337
Epoch 6/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1639 - accuracy: 0.6269 - val_loss: 1.0768 - val_accuracy: 0.6657
Epoch 7/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0696 - accuracy: 0.6535 - val_loss: 0.9181 - val_accuracy: 0.7083
Epoch 8/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9257 - accuracy: 0.6975 - val_loss: 1.1001 - val_accuracy: 0.6590
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8554 - accuracy: 0.7215 - val_loss: 0.8628 - val_accuracy: 0.7213
Epoch 10/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7748 - accuracy: 0.7537 - val_loss: 0.7843 - val_accuracy: 0.7627
Epoch 11/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7440 - accuracy: 0.7582 - val_loss: 0.7831 - val_accuracy: 0.7553
Epoch 12/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6734 - accuracy: 0.7823 - val_loss: 0.7808 - val_accuracy: 0.7563
Epoch 13/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6293 - accuracy: 0.7932 - val_loss: 0.7544 - val_accuracy: 0.7660
Epoch 14/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6017 - accuracy: 0.8073 - val_loss: 0.7128 - val_accuracy: 0.7750
Epoch 15/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5237 - accuracy: 0.8275 - val_loss: 0.8136 - val_accuracy: 0.7530
Epoch 16/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5217 - accuracy: 0.8263 - val_loss: 0.7217 - val_accuracy: 0.7823
Epoch 17/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5057 - accuracy: 0.8389 - val_loss: 0.7837 - val_accuracy: 0.7647
Epoch 18/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4786 - accuracy: 0.8433 - val_loss: 0.6309 - val_accuracy: 0.8127
Epoch 19/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4492 - accuracy: 0.8538 - val_loss: 0.6734 - val_accuracy: 0.8090
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3936 - accuracy: 0.8693 - val_loss: 0.6954 - val_accuracy: 0.8097
Epoch 21/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4124 - accuracy: 0.8642 - val_loss: 0.6643 - val_accuracy: 0.8123
Epoch 22/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3892 - accuracy: 0.8672 - val_loss: 0.6599 - val_accuracy: 0.8077
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3329 - accuracy: 0.8922 - val_loss: 0.6557 - val_accuracy: 0.8140
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3396 - accuracy: 0.8891 - val_loss: 0.6538 - val_accuracy: 0.8233
Epoch 25/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3246 - accuracy: 0.8979 - val_loss: 0.6459 - val_accuracy: 0.8183
Epoch 26/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3298 - accuracy: 0.8870 - val_loss: 0.6830 - val_accuracy: 0.8163
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3012 - accuracy: 0.9014 - val_loss: 0.6787 - val_accuracy: 0.8150
Epoch 28/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2924 - accuracy: 0.9040 - val_loss: 0.7025 - val_accuracy: 0.8153
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3000 - accuracy: 0.9003 - val_loss: 0.6542 - val_accuracy: 0.8300
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2769 - accuracy: 0.9063 - val_loss: 0.7734 - val_accuracy: 0.7937
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2645 - accuracy: 0.9161 - val_loss: 0.6724 - val_accuracy: 0.8300
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2609 - accuracy: 0.9175 - val_loss: 0.6507 - val_accuracy: 0.8357
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2242 - accuracy: 0.9257 - val_loss: 0.6723 - val_accuracy: 0.8377
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2706 - accuracy: 0.9077 - val_loss: 0.6208 - val_accuracy: 0.8373
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2209 - accuracy: 0.9263 - val_loss: 0.6679 - val_accuracy: 0.8243
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2406 - accuracy: 0.9197 - val_loss: 0.6976 - val_accuracy: 0.8250
Epoch 37/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2375 - accuracy: 0.9233 - val_loss: 0.6989 - val_accuracy: 0.8390
Epoch 38/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2252 - accuracy: 0.9262 - val_loss: 0.6868 - val_accuracy: 0.8390
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2335 - accuracy: 0.9257 - val_loss: 0.6145 - val_accuracy: 0.8467
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2084 - accuracy: 0.9313 - val_loss: 0.6727 - val_accuracy: 0.8397
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2240 - accuracy: 0.9253 - val_loss: 0.6869 - val_accuracy: 0.8447
Epoch 42/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2086 - accuracy: 0.9342 - val_loss: 0.7108 - val_accuracy: 0.8253
Epoch 43/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2140 - accuracy: 0.9293 - val_loss: 0.6549 - val_accuracy: 0.8453
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2007 - accuracy: 0.9344 - val_loss: 0.6509 - val_accuracy: 0.8443
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1936 - accuracy: 0.9377 - val_loss: 0.7333 - val_accuracy: 0.8307
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1889 - accuracy: 0.9405 - val_loss: 0.6280 - val_accuracy: 0.8563
Epoch 47/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1762 - accuracy: 0.9424 - val_loss: 0.8140 - val_accuracy: 0.8330
Epoch 48/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2124 - accuracy: 0.9313 - val_loss: 0.6559 - val_accuracy: 0.8433
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1726 - accuracy: 0.9423 - val_loss: 0.6589 - val_accuracy: 0.8343
Epoch 50/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1796 - accuracy: 0.9433 - val_loss: 0.7510 - val_accuracy: 0.8243
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1776 - accuracy: 0.9438 - val_loss: 0.6941 - val_accuracy: 0.8507
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1786 - accuracy: 0.9411 - val_loss: 0.7147 - val_accuracy: 0.8347
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1680 - accuracy: 0.9469 - val_loss: 0.7685 - val_accuracy: 0.8333
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1764 - accuracy: 0.9437 - val_loss: 0.7272 - val_accuracy: 0.8380
Epoch 55/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1926 - accuracy: 0.9389 - val_loss: 0.7657 - val_accuracy: 0.8353
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1680 - accuracy: 0.9441 - val_loss: 0.6910 - val_accuracy: 0.8317
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1726 - accuracy: 0.9430 - val_loss: 0.7906 - val_accuracy: 0.8337
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1649 - accuracy: 0.9479 - val_loss: 0.8437 - val_accuracy: 0.8080
Epoch 59/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1674 - accuracy: 0.9445 - val_loss: 0.6572 - val_accuracy: 0.8597
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1728 - accuracy: 0.9432 - val_loss: 0.7066 - val_accuracy: 0.8480
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1481 - accuracy: 0.9533 - val_loss: 0.7113 - val_accuracy: 0.8453
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1591 - accuracy: 0.9499 - val_loss: 0.6479 - val_accuracy: 0.8593
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1480 - accuracy: 0.9529 - val_loss: 0.7136 - val_accuracy: 0.8530
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1450 - accuracy: 0.9510 - val_loss: 0.6667 - val_accuracy: 0.8643
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1347 - accuracy: 0.9566 - val_loss: 0.6383 - val_accuracy: 0.8657
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1656 - accuracy: 0.9481 - val_loss: 0.7282 - val_accuracy: 0.8570
Epoch 67/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1732 - accuracy: 0.9458 - val_loss: 0.7161 - val_accuracy: 0.8460
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1414 - accuracy: 0.9567 - val_loss: 0.7386 - val_accuracy: 0.8457
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1540 - accuracy: 0.9500 - val_loss: 0.8165 - val_accuracy: 0.8253
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1568 - accuracy: 0.9545 - val_loss: 0.6606 - val_accuracy: 0.8673
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1475 - accuracy: 0.9516 - val_loss: 0.7083 - val_accuracy: 0.8540
Epoch 72/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1230 - accuracy: 0.9582 - val_loss: 0.7697 - val_accuracy: 0.8473
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1293 - accuracy: 0.9584 - val_loss: 0.8241 - val_accuracy: 0.8317
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1538 - accuracy: 0.9519 - val_loss: 0.6790 - val_accuracy: 0.8670
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1313 - accuracy: 0.9598 - val_loss: 0.7710 - val_accuracy: 0.8313
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1578 - accuracy: 0.9518 - val_loss: 0.7460 - val_accuracy: 0.8540
Epoch 77/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1473 - accuracy: 0.9575 - val_loss: 0.7031 - val_accuracy: 0.8527
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1427 - accuracy: 0.9547 - val_loss: 0.7159 - val_accuracy: 0.8587
Epoch 79/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1241 - accuracy: 0.9606 - val_loss: 0.6348 - val_accuracy: 0.8643
Epoch 80/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1218 - accuracy: 0.9612 - val_loss: 0.7069 - val_accuracy: 0.8583
Epoch 81/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1463 - accuracy: 0.9545 - val_loss: 0.7020 - val_accuracy: 0.8497
Epoch 82/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1116 - accuracy: 0.9622 - val_loss: 0.6815 - val_accuracy: 0.8653
Epoch 83/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1237 - accuracy: 0.9596 - val_loss: 0.8469 - val_accuracy: 0.8280
Epoch 84/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1316 - accuracy: 0.9617 - val_loss: 0.7214 - val_accuracy: 0.8670
Epoch 85/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1176 - accuracy: 0.9638 - val_loss: 0.8436 - val_accuracy: 0.8480
Epoch 86/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1361 - accuracy: 0.9570 - val_loss: 0.7351 - val_accuracy: 0.8607
Epoch 87/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1434 - accuracy: 0.9562 - val_loss: 0.6961 - val_accuracy: 0.8643
Epoch 88/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1393 - accuracy: 0.9591 - val_loss: 0.8568 - val_accuracy: 0.8397
Epoch 89/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1462 - accuracy: 0.9584 - val_loss: 0.6518 - val_accuracy: 0.8653
Epoch 90/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1160 - accuracy: 0.9622 - val_loss: 0.7521 - val_accuracy: 0.8557
Epoch 91/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1267 - accuracy: 0.9626 - val_loss: 0.7511 - val_accuracy: 0.8557
Epoch 92/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1215 - accuracy: 0.9633 - val_loss: 0.7235 - val_accuracy: 0.8510
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1096 - accuracy: 0.9657 - val_loss: 0.7192 - val_accuracy: 0.8630
Epoch 94/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1220 - accuracy: 0.9628 - val_loss: 0.7218 - val_accuracy: 0.8537
Epoch 95/100
71/71 [==============================] - 1s 11ms/step - loss: 0.0984 - accuracy: 0.9687 - val_loss: 0.7360 - val_accuracy: 0.8557
Epoch 96/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1294 - accuracy: 0.9607 - val_loss: 0.7827 - val_accuracy: 0.8583
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1307 - accuracy: 0.9599 - val_loss: 0.7524 - val_accuracy: 0.8633
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1171 - accuracy: 0.9651 - val_loss: 0.6775 - val_accuracy: 0.8603
Epoch 99/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1360 - accuracy: 0.9595 - val_loss: 0.7787 - val_accuracy: 0.8500
Epoch 100/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1361 - accuracy: 0.9587 - val_loss: 0.7127 - val_accuracy: 0.8627
Epoch 1/100
71/71 [==============================] - 1s 13ms/step - loss: 2.4072 - accuracy: 0.1961 - val_loss: 2.2090 - val_accuracy: 0.3033
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 1.9249 - accuracy: 0.3840 - val_loss: 1.9789 - val_accuracy: 0.3713
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6648 - accuracy: 0.4639 - val_loss: 1.4944 - val_accuracy: 0.5287
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 1.4804 - accuracy: 0.5318 - val_loss: 1.3250 - val_accuracy: 0.6063
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 1.3174 - accuracy: 0.5779 - val_loss: 1.2385 - val_accuracy: 0.6247
Epoch 6/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1922 - accuracy: 0.6280 - val_loss: 1.2261 - val_accuracy: 0.6273
Epoch 7/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0692 - accuracy: 0.6642 - val_loss: 1.1371 - val_accuracy: 0.6460
Epoch 8/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9931 - accuracy: 0.6844 - val_loss: 0.9502 - val_accuracy: 0.7077
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8994 - accuracy: 0.7115 - val_loss: 0.9834 - val_accuracy: 0.6870
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8142 - accuracy: 0.7375 - val_loss: 0.8658 - val_accuracy: 0.7317
Epoch 11/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7708 - accuracy: 0.7556 - val_loss: 0.8770 - val_accuracy: 0.7330
Epoch 12/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7331 - accuracy: 0.7677 - val_loss: 0.9918 - val_accuracy: 0.7090
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6578 - accuracy: 0.7848 - val_loss: 0.7605 - val_accuracy: 0.7780
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5782 - accuracy: 0.8138 - val_loss: 0.7859 - val_accuracy: 0.7660
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5632 - accuracy: 0.8158 - val_loss: 0.8086 - val_accuracy: 0.7680
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5185 - accuracy: 0.8309 - val_loss: 0.7728 - val_accuracy: 0.7697
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4647 - accuracy: 0.8495 - val_loss: 0.7770 - val_accuracy: 0.7707
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4535 - accuracy: 0.8538 - val_loss: 0.7199 - val_accuracy: 0.7843
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4540 - accuracy: 0.8532 - val_loss: 0.7768 - val_accuracy: 0.7710
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4328 - accuracy: 0.8569 - val_loss: 0.9039 - val_accuracy: 0.7417
Epoch 21/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3970 - accuracy: 0.8695 - val_loss: 0.7355 - val_accuracy: 0.7930
Epoch 22/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3915 - accuracy: 0.8732 - val_loss: 0.8229 - val_accuracy: 0.7737
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3356 - accuracy: 0.8900 - val_loss: 0.7546 - val_accuracy: 0.7880
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3278 - accuracy: 0.8914 - val_loss: 0.6961 - val_accuracy: 0.8053
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3700 - accuracy: 0.8775 - val_loss: 0.7190 - val_accuracy: 0.8047
Epoch 26/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3368 - accuracy: 0.8909 - val_loss: 0.7274 - val_accuracy: 0.7997
Epoch 27/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3195 - accuracy: 0.8952 - val_loss: 0.7026 - val_accuracy: 0.8053
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3054 - accuracy: 0.9006 - val_loss: 0.7886 - val_accuracy: 0.7917
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2908 - accuracy: 0.9036 - val_loss: 0.6961 - val_accuracy: 0.8130
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2817 - accuracy: 0.9061 - val_loss: 0.6959 - val_accuracy: 0.8157
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2572 - accuracy: 0.9154 - val_loss: 0.7062 - val_accuracy: 0.8137
Epoch 32/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2580 - accuracy: 0.9135 - val_loss: 0.7857 - val_accuracy: 0.7963
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2394 - accuracy: 0.9207 - val_loss: 0.7162 - val_accuracy: 0.8090
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2380 - accuracy: 0.9200 - val_loss: 0.7807 - val_accuracy: 0.7983
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2544 - accuracy: 0.9137 - val_loss: 0.7078 - val_accuracy: 0.8147
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2645 - accuracy: 0.9122 - val_loss: 0.8623 - val_accuracy: 0.7937
Epoch 37/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2344 - accuracy: 0.9220 - val_loss: 0.7672 - val_accuracy: 0.7977
Epoch 38/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2266 - accuracy: 0.9239 - val_loss: 0.7165 - val_accuracy: 0.8133
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2167 - accuracy: 0.9249 - val_loss: 0.7632 - val_accuracy: 0.8043
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2102 - accuracy: 0.9312 - val_loss: 0.7200 - val_accuracy: 0.8143
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2109 - accuracy: 0.9272 - val_loss: 0.7445 - val_accuracy: 0.8100
Epoch 42/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2128 - accuracy: 0.9297 - val_loss: 0.8110 - val_accuracy: 0.8050
Epoch 43/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1906 - accuracy: 0.9368 - val_loss: 0.8060 - val_accuracy: 0.7983
Epoch 44/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2187 - accuracy: 0.9288 - val_loss: 0.7416 - val_accuracy: 0.8237
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1916 - accuracy: 0.9383 - val_loss: 0.7505 - val_accuracy: 0.8123
Epoch 46/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2001 - accuracy: 0.9331 - val_loss: 0.7094 - val_accuracy: 0.8267
Epoch 47/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1902 - accuracy: 0.9373 - val_loss: 0.7550 - val_accuracy: 0.8160
Epoch 48/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1822 - accuracy: 0.9386 - val_loss: 0.7210 - val_accuracy: 0.8230
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1699 - accuracy: 0.9413 - val_loss: 0.7876 - val_accuracy: 0.8080
Epoch 50/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1763 - accuracy: 0.9414 - val_loss: 0.7348 - val_accuracy: 0.8197
Epoch 51/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1589 - accuracy: 0.9459 - val_loss: 0.7655 - val_accuracy: 0.8193
Epoch 52/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1756 - accuracy: 0.9416 - val_loss: 0.8818 - val_accuracy: 0.7957
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1858 - accuracy: 0.9375 - val_loss: 0.9944 - val_accuracy: 0.7797
Epoch 54/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1945 - accuracy: 0.9362 - val_loss: 0.8122 - val_accuracy: 0.8117
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1744 - accuracy: 0.9402 - val_loss: 0.7977 - val_accuracy: 0.8103
Epoch 56/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1639 - accuracy: 0.9462 - val_loss: 0.7668 - val_accuracy: 0.8243
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1713 - accuracy: 0.9423 - val_loss: 0.7962 - val_accuracy: 0.8060
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1472 - accuracy: 0.9509 - val_loss: 0.8090 - val_accuracy: 0.8157
Epoch 59/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1807 - accuracy: 0.9375 - val_loss: 0.7460 - val_accuracy: 0.8300
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1674 - accuracy: 0.9447 - val_loss: 0.7533 - val_accuracy: 0.8277
Epoch 61/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1441 - accuracy: 0.9536 - val_loss: 0.9012 - val_accuracy: 0.7930
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1524 - accuracy: 0.9490 - val_loss: 0.8745 - val_accuracy: 0.8083
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1400 - accuracy: 0.9549 - val_loss: 0.7800 - val_accuracy: 0.8173
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1472 - accuracy: 0.9525 - val_loss: 0.7854 - val_accuracy: 0.8260
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1332 - accuracy: 0.9560 - val_loss: 0.7895 - val_accuracy: 0.8250
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1605 - accuracy: 0.9471 - val_loss: 0.7985 - val_accuracy: 0.8197
Epoch 67/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1437 - accuracy: 0.9529 - val_loss: 0.8457 - val_accuracy: 0.8147
Epoch 68/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1436 - accuracy: 0.9507 - val_loss: 0.8559 - val_accuracy: 0.8047
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1532 - accuracy: 0.9483 - val_loss: 0.8230 - val_accuracy: 0.8220
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1462 - accuracy: 0.9523 - val_loss: 0.7968 - val_accuracy: 0.8220
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1304 - accuracy: 0.9562 - val_loss: 0.9136 - val_accuracy: 0.7977
Epoch 72/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1301 - accuracy: 0.9584 - val_loss: 0.7644 - val_accuracy: 0.8250
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1243 - accuracy: 0.9575 - val_loss: 0.7805 - val_accuracy: 0.8340
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1401 - accuracy: 0.9527 - val_loss: 0.8400 - val_accuracy: 0.8160
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1364 - accuracy: 0.9555 - val_loss: 0.7919 - val_accuracy: 0.8247
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1379 - accuracy: 0.9537 - val_loss: 0.8497 - val_accuracy: 0.8170
Epoch 77/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1383 - accuracy: 0.9539 - val_loss: 0.7957 - val_accuracy: 0.8263
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1135 - accuracy: 0.9625 - val_loss: 0.8637 - val_accuracy: 0.8183
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1440 - accuracy: 0.9523 - val_loss: 0.8169 - val_accuracy: 0.8227
Epoch 80/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1320 - accuracy: 0.9528 - val_loss: 0.7878 - val_accuracy: 0.8190
Epoch 81/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1438 - accuracy: 0.9527 - val_loss: 0.8059 - val_accuracy: 0.8153
Epoch 82/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1266 - accuracy: 0.9570 - val_loss: 1.0969 - val_accuracy: 0.7590
Epoch 83/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1348 - accuracy: 0.9574 - val_loss: 0.9198 - val_accuracy: 0.7947
Epoch 84/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1160 - accuracy: 0.9620 - val_loss: 0.8218 - val_accuracy: 0.8187
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1029 - accuracy: 0.9664 - val_loss: 0.7867 - val_accuracy: 0.8300
Epoch 86/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1127 - accuracy: 0.9609 - val_loss: 0.7863 - val_accuracy: 0.8287
Epoch 87/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1143 - accuracy: 0.9619 - val_loss: 0.8157 - val_accuracy: 0.8193
Epoch 88/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1106 - accuracy: 0.9641 - val_loss: 0.7232 - val_accuracy: 0.8373
Epoch 89/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1041 - accuracy: 0.9661 - val_loss: 0.7473 - val_accuracy: 0.8397
Epoch 90/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1225 - accuracy: 0.9582 - val_loss: 0.8622 - val_accuracy: 0.8107
Epoch 91/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1190 - accuracy: 0.9603 - val_loss: 0.7345 - val_accuracy: 0.8320
Epoch 92/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1248 - accuracy: 0.9600 - val_loss: 0.7379 - val_accuracy: 0.8443
Epoch 93/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1120 - accuracy: 0.9649 - val_loss: 0.7782 - val_accuracy: 0.8273
Epoch 94/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1071 - accuracy: 0.9636 - val_loss: 0.7798 - val_accuracy: 0.8270
Epoch 95/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1171 - accuracy: 0.9603 - val_loss: 0.8139 - val_accuracy: 0.8263
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1210 - accuracy: 0.9613 - val_loss: 0.7532 - val_accuracy: 0.8327
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1133 - accuracy: 0.9629 - val_loss: 0.7477 - val_accuracy: 0.8340
Epoch 98/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1263 - accuracy: 0.9574 - val_loss: 0.8510 - val_accuracy: 0.8177
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1003 - accuracy: 0.9696 - val_loss: 0.7341 - val_accuracy: 0.8473
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0985 - accuracy: 0.9665 - val_loss: 0.7811 - val_accuracy: 0.8330
Epoch 1/100
71/71 [==============================] - 1s 12ms/step - loss: 2.6143 - accuracy: 0.1006 - val_loss: 2.6010 - val_accuracy: 0.1010
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4543 - accuracy: 0.1499 - val_loss: 2.4069 - val_accuracy: 0.1797
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 2.2516 - accuracy: 0.2127 - val_loss: 2.1411 - val_accuracy: 0.2973
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 1.9393 - accuracy: 0.3507 - val_loss: 1.8618 - val_accuracy: 0.4030
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7305 - accuracy: 0.4310 - val_loss: 1.5628 - val_accuracy: 0.4813
Epoch 6/100
71/71 [==============================] - 1s 11ms/step - loss: 1.5562 - accuracy: 0.4866 - val_loss: 1.3725 - val_accuracy: 0.5580
Epoch 7/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4105 - accuracy: 0.5382 - val_loss: 1.2379 - val_accuracy: 0.5997
Epoch 8/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2536 - accuracy: 0.5872 - val_loss: 1.1352 - val_accuracy: 0.6347
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1816 - accuracy: 0.6139 - val_loss: 1.1123 - val_accuracy: 0.6357
Epoch 10/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0667 - accuracy: 0.6512 - val_loss: 1.0638 - val_accuracy: 0.6557
Epoch 11/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9811 - accuracy: 0.6763 - val_loss: 0.8612 - val_accuracy: 0.7207
Epoch 12/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9031 - accuracy: 0.7096 - val_loss: 0.8671 - val_accuracy: 0.7243
Epoch 13/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8449 - accuracy: 0.7288 - val_loss: 0.7704 - val_accuracy: 0.7603
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7587 - accuracy: 0.7553 - val_loss: 0.6344 - val_accuracy: 0.7947
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6799 - accuracy: 0.7772 - val_loss: 0.5884 - val_accuracy: 0.8193
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6388 - accuracy: 0.7916 - val_loss: 0.5195 - val_accuracy: 0.8437
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6136 - accuracy: 0.8042 - val_loss: 0.5482 - val_accuracy: 0.8240
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5651 - accuracy: 0.8227 - val_loss: 0.5203 - val_accuracy: 0.8370
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5358 - accuracy: 0.8267 - val_loss: 0.6297 - val_accuracy: 0.7910
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5084 - accuracy: 0.8407 - val_loss: 0.4364 - val_accuracy: 0.8683
Epoch 21/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4628 - accuracy: 0.8517 - val_loss: 0.4023 - val_accuracy: 0.8720
Epoch 22/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4364 - accuracy: 0.8601 - val_loss: 0.4776 - val_accuracy: 0.8510
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4144 - accuracy: 0.8686 - val_loss: 0.3715 - val_accuracy: 0.8783
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3938 - accuracy: 0.8739 - val_loss: 0.3553 - val_accuracy: 0.8880
Epoch 25/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3597 - accuracy: 0.8790 - val_loss: 0.3454 - val_accuracy: 0.8917
Epoch 26/100
71/71 [==============================] - 1s 9ms/step - loss: 0.3217 - accuracy: 0.8974 - val_loss: 0.3826 - val_accuracy: 0.8807
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3439 - accuracy: 0.8893 - val_loss: 0.3458 - val_accuracy: 0.8930
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3260 - accuracy: 0.8932 - val_loss: 0.3314 - val_accuracy: 0.9007
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2994 - accuracy: 0.9049 - val_loss: 0.3149 - val_accuracy: 0.9030
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2802 - accuracy: 0.9102 - val_loss: 0.3301 - val_accuracy: 0.9013
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2941 - accuracy: 0.9072 - val_loss: 0.3140 - val_accuracy: 0.9077
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2563 - accuracy: 0.9158 - val_loss: 0.3514 - val_accuracy: 0.9007
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2635 - accuracy: 0.9147 - val_loss: 0.3494 - val_accuracy: 0.8913
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2585 - accuracy: 0.9178 - val_loss: 0.3048 - val_accuracy: 0.9093
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2605 - accuracy: 0.9163 - val_loss: 0.2799 - val_accuracy: 0.9160
Epoch 36/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2342 - accuracy: 0.9273 - val_loss: 0.2943 - val_accuracy: 0.9033
Epoch 37/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2140 - accuracy: 0.9339 - val_loss: 0.2801 - val_accuracy: 0.9150
Epoch 38/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2063 - accuracy: 0.9331 - val_loss: 0.2801 - val_accuracy: 0.9187
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2194 - accuracy: 0.9303 - val_loss: 0.3038 - val_accuracy: 0.9073
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2161 - accuracy: 0.9284 - val_loss: 0.3721 - val_accuracy: 0.8877
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2104 - accuracy: 0.9345 - val_loss: 0.2714 - val_accuracy: 0.9180
Epoch 42/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1830 - accuracy: 0.9437 - val_loss: 0.3010 - val_accuracy: 0.9083
Epoch 43/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1785 - accuracy: 0.9404 - val_loss: 0.2658 - val_accuracy: 0.9240
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1773 - accuracy: 0.9417 - val_loss: 0.3313 - val_accuracy: 0.9030
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1886 - accuracy: 0.9430 - val_loss: 0.2730 - val_accuracy: 0.9257
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1817 - accuracy: 0.9426 - val_loss: 0.2534 - val_accuracy: 0.9250
Epoch 47/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1616 - accuracy: 0.9492 - val_loss: 0.2531 - val_accuracy: 0.9303
Epoch 48/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1534 - accuracy: 0.9506 - val_loss: 0.2949 - val_accuracy: 0.9103
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1509 - accuracy: 0.9514 - val_loss: 0.2850 - val_accuracy: 0.9237
Epoch 50/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1500 - accuracy: 0.9514 - val_loss: 0.2487 - val_accuracy: 0.9273
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1364 - accuracy: 0.9562 - val_loss: 0.3012 - val_accuracy: 0.9180
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1574 - accuracy: 0.9513 - val_loss: 0.2774 - val_accuracy: 0.9233
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1501 - accuracy: 0.9497 - val_loss: 0.3079 - val_accuracy: 0.9130
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1585 - accuracy: 0.9489 - val_loss: 0.2628 - val_accuracy: 0.9283
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1435 - accuracy: 0.9543 - val_loss: 0.2644 - val_accuracy: 0.9307
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1478 - accuracy: 0.9498 - val_loss: 0.2616 - val_accuracy: 0.9300
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1372 - accuracy: 0.9559 - val_loss: 0.2801 - val_accuracy: 0.9273
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1397 - accuracy: 0.9562 - val_loss: 0.2667 - val_accuracy: 0.9283
Epoch 59/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1324 - accuracy: 0.9584 - val_loss: 0.2459 - val_accuracy: 0.9340
Epoch 60/100
71/71 [==============================] - 1s 9ms/step - loss: 0.1346 - accuracy: 0.9593 - val_loss: 0.2609 - val_accuracy: 0.9320
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1472 - accuracy: 0.9554 - val_loss: 0.2665 - val_accuracy: 0.9277
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1344 - accuracy: 0.9581 - val_loss: 0.2863 - val_accuracy: 0.9263
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1156 - accuracy: 0.9636 - val_loss: 0.2543 - val_accuracy: 0.9323
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1218 - accuracy: 0.9625 - val_loss: 0.2522 - val_accuracy: 0.9333
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1389 - accuracy: 0.9518 - val_loss: 0.2623 - val_accuracy: 0.9350
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1107 - accuracy: 0.9647 - val_loss: 0.2393 - val_accuracy: 0.9383
Epoch 67/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1148 - accuracy: 0.9643 - val_loss: 0.2182 - val_accuracy: 0.9430
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1170 - accuracy: 0.9634 - val_loss: 0.2508 - val_accuracy: 0.9373
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1068 - accuracy: 0.9692 - val_loss: 0.2437 - val_accuracy: 0.9370
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1152 - accuracy: 0.9647 - val_loss: 0.2482 - val_accuracy: 0.9353
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1101 - accuracy: 0.9644 - val_loss: 0.2502 - val_accuracy: 0.9387
Epoch 72/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0955 - accuracy: 0.9688 - val_loss: 0.2336 - val_accuracy: 0.9397
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1085 - accuracy: 0.9678 - val_loss: 0.2389 - val_accuracy: 0.9347
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1004 - accuracy: 0.9683 - val_loss: 0.2850 - val_accuracy: 0.9330
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1199 - accuracy: 0.9646 - val_loss: 0.2415 - val_accuracy: 0.9377
Epoch 76/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1197 - accuracy: 0.9630 - val_loss: 0.2479 - val_accuracy: 0.9360
Epoch 77/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0968 - accuracy: 0.9698 - val_loss: 0.2667 - val_accuracy: 0.9373
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1098 - accuracy: 0.9670 - val_loss: 0.2796 - val_accuracy: 0.9337
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0907 - accuracy: 0.9712 - val_loss: 0.2708 - val_accuracy: 0.9317
Epoch 80/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0877 - accuracy: 0.9730 - val_loss: 0.2468 - val_accuracy: 0.9417
Epoch 81/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1006 - accuracy: 0.9671 - val_loss: 0.2768 - val_accuracy: 0.9320
Epoch 82/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0920 - accuracy: 0.9702 - val_loss: 0.2991 - val_accuracy: 0.9263
Epoch 83/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1161 - accuracy: 0.9632 - val_loss: 0.2523 - val_accuracy: 0.9407
Epoch 84/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0965 - accuracy: 0.9703 - val_loss: 0.2582 - val_accuracy: 0.9373
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0979 - accuracy: 0.9704 - val_loss: 0.2951 - val_accuracy: 0.9277
Epoch 86/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1042 - accuracy: 0.9669 - val_loss: 0.2598 - val_accuracy: 0.9337
Epoch 87/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1099 - accuracy: 0.9665 - val_loss: 0.2619 - val_accuracy: 0.9380
Epoch 88/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0971 - accuracy: 0.9683 - val_loss: 0.2289 - val_accuracy: 0.9413
Epoch 89/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0912 - accuracy: 0.9723 - val_loss: 0.2495 - val_accuracy: 0.9443
Epoch 90/100
71/71 [==============================] - 1s 10ms/step - loss: 0.1024 - accuracy: 0.9685 - val_loss: 0.2513 - val_accuracy: 0.9373
Epoch 91/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0970 - accuracy: 0.9721 - val_loss: 0.2820 - val_accuracy: 0.9307
Epoch 92/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0910 - accuracy: 0.9708 - val_loss: 0.2255 - val_accuracy: 0.9413
Epoch 93/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0732 - accuracy: 0.9755 - val_loss: 0.2566 - val_accuracy: 0.9383
Epoch 94/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0944 - accuracy: 0.9699 - val_loss: 0.2552 - val_accuracy: 0.9387
Epoch 95/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0897 - accuracy: 0.9705 - val_loss: 0.2572 - val_accuracy: 0.9393
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0886 - accuracy: 0.9736 - val_loss: 0.2564 - val_accuracy: 0.9397
Epoch 97/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0876 - accuracy: 0.9720 - val_loss: 0.2378 - val_accuracy: 0.9453
Epoch 98/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0734 - accuracy: 0.9766 - val_loss: 0.2466 - val_accuracy: 0.9420
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0779 - accuracy: 0.9764 - val_loss: 0.2707 - val_accuracy: 0.9347
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.0823 - accuracy: 0.9721 - val_loss: 0.2632 - val_accuracy: 0.9357
Epoch 1/100
71/71 [==============================] - 1s 13ms/step - loss: 2.7538 - accuracy: 0.0882 - val_loss: 2.7657 - val_accuracy: 0.0667
Epoch 2/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6610 - accuracy: 0.0929 - val_loss: 2.7582 - val_accuracy: 0.0667
Epoch 3/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6508 - accuracy: 0.0958 - val_loss: 2.7539 - val_accuracy: 0.0667
Epoch 4/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6466 - accuracy: 0.0975 - val_loss: 2.7727 - val_accuracy: 0.0667
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6445 - accuracy: 0.0963 - val_loss: 2.7635 - val_accuracy: 0.0667
Epoch 6/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6463 - accuracy: 0.0969 - val_loss: 2.7829 - val_accuracy: 0.0667
Epoch 7/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6436 - accuracy: 0.0988 - val_loss: 2.7792 - val_accuracy: 0.0667
Epoch 8/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6439 - accuracy: 0.0989 - val_loss: 2.7685 - val_accuracy: 0.0667
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6417 - accuracy: 0.0960 - val_loss: 2.7839 - val_accuracy: 0.0667
Epoch 10/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6420 - accuracy: 0.1016 - val_loss: 2.7518 - val_accuracy: 0.0667
Epoch 11/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6418 - accuracy: 0.1037 - val_loss: 2.7834 - val_accuracy: 0.0667
Epoch 12/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6424 - accuracy: 0.1002 - val_loss: 2.7550 - val_accuracy: 0.0667
Epoch 13/100
71/71 [==============================] - 1s 11ms/step - loss: 2.6395 - accuracy: 0.1036 - val_loss: 2.7566 - val_accuracy: 0.0667
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6405 - accuracy: 0.1060 - val_loss: 2.7670 - val_accuracy: 0.0667
Epoch 15/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6397 - accuracy: 0.1004 - val_loss: 2.7750 - val_accuracy: 0.0667
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6376 - accuracy: 0.1078 - val_loss: 2.7696 - val_accuracy: 0.0990
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 2.5666 - accuracy: 0.1375 - val_loss: 2.6691 - val_accuracy: 0.1067
Epoch 18/100
71/71 [==============================] - 1s 11ms/step - loss: 2.4981 - accuracy: 0.1552 - val_loss: 2.5724 - val_accuracy: 0.1307
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4638 - accuracy: 0.1680 - val_loss: 2.5348 - val_accuracy: 0.1530
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4343 - accuracy: 0.1804 - val_loss: 2.5155 - val_accuracy: 0.1480
Epoch 21/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4040 - accuracy: 0.1886 - val_loss: 2.4557 - val_accuracy: 0.1733
Epoch 22/100
71/71 [==============================] - 1s 11ms/step - loss: 2.3392 - accuracy: 0.2246 - val_loss: 2.3760 - val_accuracy: 0.2003
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 2.2681 - accuracy: 0.2531 - val_loss: 2.3090 - val_accuracy: 0.2200
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 2.2146 - accuracy: 0.2750 - val_loss: 2.2431 - val_accuracy: 0.2350
Epoch 25/100
71/71 [==============================] - 1s 11ms/step - loss: 2.1563 - accuracy: 0.2854 - val_loss: 2.1797 - val_accuracy: 0.2647
Epoch 26/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0980 - accuracy: 0.3091 - val_loss: 2.1218 - val_accuracy: 0.2950
Epoch 27/100
71/71 [==============================] - 1s 11ms/step - loss: 2.0588 - accuracy: 0.3227 - val_loss: 2.0512 - val_accuracy: 0.3093
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0013 - accuracy: 0.3416 - val_loss: 2.0082 - val_accuracy: 0.3250
Epoch 29/100
71/71 [==============================] - 1s 11ms/step - loss: 1.9599 - accuracy: 0.3607 - val_loss: 1.9391 - val_accuracy: 0.3597
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 1.9218 - accuracy: 0.3758 - val_loss: 1.9068 - val_accuracy: 0.3727
Epoch 31/100
71/71 [==============================] - 1s 10ms/step - loss: 1.8703 - accuracy: 0.3934 - val_loss: 1.8483 - val_accuracy: 0.3917
Epoch 32/100
71/71 [==============================] - 1s 11ms/step - loss: 1.8343 - accuracy: 0.4074 - val_loss: 1.8198 - val_accuracy: 0.4043
Epoch 33/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7986 - accuracy: 0.4146 - val_loss: 1.7580 - val_accuracy: 0.4293
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7511 - accuracy: 0.4302 - val_loss: 1.7387 - val_accuracy: 0.4343
Epoch 35/100
71/71 [==============================] - 1s 11ms/step - loss: 1.7278 - accuracy: 0.4404 - val_loss: 1.6846 - val_accuracy: 0.4577
Epoch 36/100
71/71 [==============================] - 1s 11ms/step - loss: 1.6833 - accuracy: 0.4603 - val_loss: 1.6778 - val_accuracy: 0.4483
Epoch 37/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6649 - accuracy: 0.4631 - val_loss: 1.6388 - val_accuracy: 0.4620
Epoch 38/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6113 - accuracy: 0.4760 - val_loss: 1.5991 - val_accuracy: 0.4830
Epoch 39/100
71/71 [==============================] - 1s 11ms/step - loss: 1.5748 - accuracy: 0.4894 - val_loss: 1.5626 - val_accuracy: 0.4937
Epoch 40/100
71/71 [==============================] - 1s 10ms/step - loss: 1.5494 - accuracy: 0.5096 - val_loss: 1.5341 - val_accuracy: 0.5023
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 1.5209 - accuracy: 0.5081 - val_loss: 1.4962 - val_accuracy: 0.5153
Epoch 42/100
71/71 [==============================] - 1s 11ms/step - loss: 1.5075 - accuracy: 0.5158 - val_loss: 1.4885 - val_accuracy: 0.5170
Epoch 43/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4626 - accuracy: 0.5265 - val_loss: 1.4634 - val_accuracy: 0.5180
Epoch 44/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4443 - accuracy: 0.5319 - val_loss: 1.4401 - val_accuracy: 0.5327
Epoch 45/100
71/71 [==============================] - 1s 10ms/step - loss: 1.4158 - accuracy: 0.5471 - val_loss: 1.3892 - val_accuracy: 0.5497
Epoch 46/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3759 - accuracy: 0.5514 - val_loss: 1.3878 - val_accuracy: 0.5520
Epoch 47/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3661 - accuracy: 0.5556 - val_loss: 1.3577 - val_accuracy: 0.5627
Epoch 48/100
71/71 [==============================] - 1s 10ms/step - loss: 1.3414 - accuracy: 0.5639 - val_loss: 1.3048 - val_accuracy: 0.5767
Epoch 49/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3073 - accuracy: 0.5774 - val_loss: 1.2940 - val_accuracy: 0.5817
Epoch 50/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2855 - accuracy: 0.5839 - val_loss: 1.2799 - val_accuracy: 0.5880
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2619 - accuracy: 0.5977 - val_loss: 1.2717 - val_accuracy: 0.5897
Epoch 52/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2521 - accuracy: 0.5961 - val_loss: 1.2528 - val_accuracy: 0.6047
Epoch 53/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2103 - accuracy: 0.6074 - val_loss: 1.1967 - val_accuracy: 0.6250
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1905 - accuracy: 0.6140 - val_loss: 1.1924 - val_accuracy: 0.6213
Epoch 55/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1654 - accuracy: 0.6248 - val_loss: 1.1945 - val_accuracy: 0.6180
Epoch 56/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1334 - accuracy: 0.6348 - val_loss: 1.1591 - val_accuracy: 0.6380
Epoch 57/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1303 - accuracy: 0.6381 - val_loss: 1.1319 - val_accuracy: 0.6470
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 1.1060 - accuracy: 0.6441 - val_loss: 1.1006 - val_accuracy: 0.6590
Epoch 59/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0759 - accuracy: 0.6536 - val_loss: 1.1311 - val_accuracy: 0.6473
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0606 - accuracy: 0.6611 - val_loss: 1.0807 - val_accuracy: 0.6720
Epoch 61/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0466 - accuracy: 0.6654 - val_loss: 1.0683 - val_accuracy: 0.6760
Epoch 62/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0261 - accuracy: 0.6704 - val_loss: 1.0500 - val_accuracy: 0.6850
Epoch 63/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9980 - accuracy: 0.6802 - val_loss: 1.0226 - val_accuracy: 0.6883
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9839 - accuracy: 0.6871 - val_loss: 1.0147 - val_accuracy: 0.6957
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9744 - accuracy: 0.6914 - val_loss: 1.0180 - val_accuracy: 0.6890
Epoch 66/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9521 - accuracy: 0.6943 - val_loss: 0.9947 - val_accuracy: 0.6930
Epoch 67/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9343 - accuracy: 0.6982 - val_loss: 0.9843 - val_accuracy: 0.7040
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9167 - accuracy: 0.7033 - val_loss: 0.9601 - val_accuracy: 0.7107
Epoch 69/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9015 - accuracy: 0.7121 - val_loss: 0.9613 - val_accuracy: 0.7110
Epoch 70/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8778 - accuracy: 0.7213 - val_loss: 0.9711 - val_accuracy: 0.7003
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8504 - accuracy: 0.7255 - val_loss: 0.9376 - val_accuracy: 0.7180
Epoch 72/100
71/71 [==============================] - 1s 11ms/step - loss: 0.8594 - accuracy: 0.7256 - val_loss: 0.9186 - val_accuracy: 0.7167
Epoch 73/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8266 - accuracy: 0.7348 - val_loss: 0.9104 - val_accuracy: 0.7233
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8105 - accuracy: 0.7434 - val_loss: 0.8939 - val_accuracy: 0.7290
Epoch 75/100
71/71 [==============================] - 1s 11ms/step - loss: 0.8078 - accuracy: 0.7381 - val_loss: 0.8988 - val_accuracy: 0.7267
Epoch 76/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7654 - accuracy: 0.7570 - val_loss: 0.8781 - val_accuracy: 0.7333
Epoch 77/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7743 - accuracy: 0.7547 - val_loss: 0.8752 - val_accuracy: 0.7373
Epoch 78/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7594 - accuracy: 0.7562 - val_loss: 0.8582 - val_accuracy: 0.7363
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7528 - accuracy: 0.7544 - val_loss: 0.8771 - val_accuracy: 0.7327
Epoch 80/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7421 - accuracy: 0.7609 - val_loss: 0.8555 - val_accuracy: 0.7363
Epoch 81/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7141 - accuracy: 0.7706 - val_loss: 0.8400 - val_accuracy: 0.7460
Epoch 82/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7104 - accuracy: 0.7700 - val_loss: 0.8468 - val_accuracy: 0.7483
Epoch 83/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6957 - accuracy: 0.7785 - val_loss: 0.8206 - val_accuracy: 0.7483
Epoch 84/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6858 - accuracy: 0.7794 - val_loss: 0.8026 - val_accuracy: 0.7573
Epoch 85/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6742 - accuracy: 0.7815 - val_loss: 0.8112 - val_accuracy: 0.7557
Epoch 86/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6666 - accuracy: 0.7819 - val_loss: 0.7987 - val_accuracy: 0.7613
Epoch 87/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6448 - accuracy: 0.7945 - val_loss: 0.7962 - val_accuracy: 0.7583
Epoch 88/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6478 - accuracy: 0.7916 - val_loss: 0.7915 - val_accuracy: 0.7633
Epoch 89/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6216 - accuracy: 0.7969 - val_loss: 0.7920 - val_accuracy: 0.7587
Epoch 90/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6091 - accuracy: 0.8052 - val_loss: 0.7698 - val_accuracy: 0.7723
Epoch 91/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6062 - accuracy: 0.8049 - val_loss: 0.7805 - val_accuracy: 0.7703
Epoch 92/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6055 - accuracy: 0.8031 - val_loss: 0.7579 - val_accuracy: 0.7720
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5813 - accuracy: 0.8135 - val_loss: 0.7690 - val_accuracy: 0.7693
Epoch 94/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5661 - accuracy: 0.8162 - val_loss: 0.7594 - val_accuracy: 0.7733
Epoch 95/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5657 - accuracy: 0.8152 - val_loss: 0.7468 - val_accuracy: 0.7853
Epoch 96/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5596 - accuracy: 0.8191 - val_loss: 0.7728 - val_accuracy: 0.7763
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5451 - accuracy: 0.8175 - val_loss: 0.7495 - val_accuracy: 0.7757
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5349 - accuracy: 0.8249 - val_loss: 0.7357 - val_accuracy: 0.7803
Epoch 99/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5352 - accuracy: 0.8244 - val_loss: 0.7270 - val_accuracy: 0.7860
Epoch 100/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5251 - accuracy: 0.8273 - val_loss: 0.7459 - val_accuracy: 0.7777
In [110]:
valLost = {k:v.history['val_accuracy'] for k,v in results.items()}
valLostCurve = pd.DataFrame(valLost)
valLostCurve.plot()
plt.title('Validation Accuracy')
plt.show()

From the validation accuracy graph, relu performed the best. We will use relu as our activation¶

Hyper-parameter tuning¶

In [113]:
def createModel(optimizer,dropout):
    model = Sequential()
    model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout))

    model.add(Conv2D(128, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout))

    model.add(Conv2D(256, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout))


    model.add(Flatten())

    model.add(Dense(512, activation='relu'))
    model.add(Dropout(0.5))

    model.add(Dense(256, activation='relu'))
    model.add(Dropout(0.5))

    model.add(Dense(15,activation='softmax'))

    model.compile(loss='categorical_crossentropy',optimizer=optimizer, metrics=['accuracy'])
    return model
In [114]:
model = KerasClassifier(build_fn=createModel,epochs=100,batch_size=128)
paramGrid = {'optimizer':['adam','rmsprop','nadam'],'dropout':[0.2,0.3,0.4]}
randomSearch = RandomizedSearchCV(model,param_distributions = paramGrid, cv=3)
randomSearchRes = randomSearch.fit(X_train,y_train)
print(f"Best Score: {randomSearchRes.best_score_} Best Params: {randomSearchRes.best_params_}")
Epoch 1/100
C:\Users\kieny\AppData\Local\Temp\ipykernel_43868\2954678440.py:4: DeprecationWarning: KerasClassifier is deprecated, use Sci-Keras (https://github.com/adriangb/scikeras) instead. See https://www.adriangb.com/scikeras/stable/migration.html for help migrating.
  model = KerasClassifier(build_fn=createModel,epochs=100,batch_size=128)
48/48 [==============================] - 1s 12ms/step - loss: 2.6302 - accuracy: 0.0869
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5294 - accuracy: 0.1190
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4299 - accuracy: 0.1544
Epoch 4/100
48/48 [==============================] - 0s 9ms/step - loss: 2.3194 - accuracy: 0.2036
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2720 - accuracy: 0.2434
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.0877 - accuracy: 0.3038
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8730 - accuracy: 0.3810
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.9382 - accuracy: 0.3735
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6044 - accuracy: 0.4742
Epoch 10/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1023 - accuracy: 0.3362
Epoch 11/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6347 - accuracy: 0.4729
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4276 - accuracy: 0.5399
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2874 - accuracy: 0.5823
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4076 - accuracy: 0.5445
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1671 - accuracy: 0.6210
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0986 - accuracy: 0.6417
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0270 - accuracy: 0.6633
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9233 - accuracy: 0.6991
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8416 - accuracy: 0.7253
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8065 - accuracy: 0.7346
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8597 - accuracy: 0.7235
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8176 - accuracy: 0.7365
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6708 - accuracy: 0.7815
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6168 - accuracy: 0.8026
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5592 - accuracy: 0.8169
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6522 - accuracy: 0.7840
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5585 - accuracy: 0.8166
Epoch 28/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7032 - accuracy: 0.7692
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4723 - accuracy: 0.8470
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4687 - accuracy: 0.8493
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4264 - accuracy: 0.8611
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3909 - accuracy: 0.8711
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3694 - accuracy: 0.8792
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3922 - accuracy: 0.8797
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3153 - accuracy: 0.8968
Epoch 36/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3742 - accuracy: 0.8799
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3123 - accuracy: 0.9031
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2737 - accuracy: 0.9144
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3421 - accuracy: 0.8945
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3345 - accuracy: 0.8927
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2497 - accuracy: 0.9209
Epoch 42/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2343 - accuracy: 0.9236
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4989 - accuracy: 0.8513
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2616 - accuracy: 0.9148
Epoch 45/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2238 - accuracy: 0.9247
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1940 - accuracy: 0.9395
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2087 - accuracy: 0.9345
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2056 - accuracy: 0.9340
Epoch 49/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1736 - accuracy: 0.9418
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1978 - accuracy: 0.9380
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5742 - accuracy: 0.8375
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2109 - accuracy: 0.9324
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1794 - accuracy: 0.9440
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2052 - accuracy: 0.9342
Epoch 55/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2371 - accuracy: 0.9252
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1475 - accuracy: 0.9546
Epoch 57/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1602 - accuracy: 0.9458
Epoch 58/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1455 - accuracy: 0.9523
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2171 - accuracy: 0.9335
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1547 - accuracy: 0.9513
Epoch 61/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1489 - accuracy: 0.9525
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1950 - accuracy: 0.9393
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1193 - accuracy: 0.9605
Epoch 64/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1118 - accuracy: 0.9656
Epoch 65/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1085 - accuracy: 0.9628
Epoch 66/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1117 - accuracy: 0.9658
Epoch 67/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0977 - accuracy: 0.9679
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1012 - accuracy: 0.9671
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1091 - accuracy: 0.9643
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0869 - accuracy: 0.9726
Epoch 71/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1944 - accuracy: 0.9422
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1120 - accuracy: 0.9646
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1018 - accuracy: 0.9671
Epoch 74/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1121 - accuracy: 0.9638
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1016 - accuracy: 0.9671
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1331 - accuracy: 0.9581
Epoch 77/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0958 - accuracy: 0.9686
Epoch 78/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1122 - accuracy: 0.9651
Epoch 79/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0910 - accuracy: 0.9691
Epoch 80/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1206 - accuracy: 0.9643
Epoch 81/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0957 - accuracy: 0.9718
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1010 - accuracy: 0.9688
Epoch 83/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0934 - accuracy: 0.9704
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0746 - accuracy: 0.9764
Epoch 85/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0717 - accuracy: 0.9772
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0703 - accuracy: 0.9757
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0803 - accuracy: 0.9729
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0708 - accuracy: 0.9782
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0751 - accuracy: 0.9754
Epoch 90/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0688 - accuracy: 0.9784
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0941 - accuracy: 0.9716
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0925 - accuracy: 0.9734
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0786 - accuracy: 0.9747
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0717 - accuracy: 0.9777
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0905 - accuracy: 0.9736
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0867 - accuracy: 0.9721
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0870 - accuracy: 0.9704
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0719 - accuracy: 0.9774
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0626 - accuracy: 0.9799
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0702 - accuracy: 0.9791
24/24 [==============================] - 0s 7ms/step - loss: 0.3984 - accuracy: 0.9017
Epoch 1/100
48/48 [==============================] - 1s 11ms/step - loss: 2.6354 - accuracy: 0.0892
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5399 - accuracy: 0.1141
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4368 - accuracy: 0.1630
Epoch 4/100
48/48 [==============================] - 0s 9ms/step - loss: 2.3471 - accuracy: 0.1987
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1824 - accuracy: 0.2622
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.0372 - accuracy: 0.3361
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8214 - accuracy: 0.3989
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.7023 - accuracy: 0.4438
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5362 - accuracy: 0.4923
Epoch 10/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5675 - accuracy: 0.4891
Epoch 11/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3403 - accuracy: 0.5627
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2781 - accuracy: 0.5825
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1889 - accuracy: 0.6112
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1424 - accuracy: 0.6263
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1103 - accuracy: 0.6416
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0113 - accuracy: 0.6760
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9444 - accuracy: 0.6882
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8408 - accuracy: 0.7289
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8407 - accuracy: 0.7317
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7778 - accuracy: 0.7476
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7297 - accuracy: 0.7598
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7589 - accuracy: 0.7561
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6285 - accuracy: 0.7947
Epoch 24/100
48/48 [==============================] - 0s 8ms/step - loss: 0.7317 - accuracy: 0.7711
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7607 - accuracy: 0.7579
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6617 - accuracy: 0.7885
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5162 - accuracy: 0.8345
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5300 - accuracy: 0.8299
Epoch 29/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6348 - accuracy: 0.7998
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4659 - accuracy: 0.8495
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4264 - accuracy: 0.8614
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4112 - accuracy: 0.8644
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4717 - accuracy: 0.8443
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3785 - accuracy: 0.8789
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4521 - accuracy: 0.8576
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3547 - accuracy: 0.8884
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3529 - accuracy: 0.8859
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4000 - accuracy: 0.8681
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3311 - accuracy: 0.8927
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2971 - accuracy: 0.8987
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2848 - accuracy: 0.9083
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2639 - accuracy: 0.9148
Epoch 43/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2618 - accuracy: 0.9196
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2786 - accuracy: 0.9123
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3137 - accuracy: 0.8947
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2380 - accuracy: 0.9244
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3976 - accuracy: 0.8724
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2814 - accuracy: 0.9075
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2190 - accuracy: 0.9319
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2119 - accuracy: 0.9327
Epoch 51/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2364 - accuracy: 0.9231
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2132 - accuracy: 0.9322
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1805 - accuracy: 0.9410
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1843 - accuracy: 0.9389
Epoch 55/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1687 - accuracy: 0.9467
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1643 - accuracy: 0.9473
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2056 - accuracy: 0.9309
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1664 - accuracy: 0.9468
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1543 - accuracy: 0.9517
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1700 - accuracy: 0.9433
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1517 - accuracy: 0.9525
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1663 - accuracy: 0.9472
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1685 - accuracy: 0.9472
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1470 - accuracy: 0.9518
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1337 - accuracy: 0.9551
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1243 - accuracy: 0.9593
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1287 - accuracy: 0.9593
Epoch 68/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1613 - accuracy: 0.9472
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1347 - accuracy: 0.9561
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1162 - accuracy: 0.9644
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1163 - accuracy: 0.9658
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1178 - accuracy: 0.9600
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1162 - accuracy: 0.9633
Epoch 74/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2298 - accuracy: 0.9282
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2418 - accuracy: 0.9244
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1257 - accuracy: 0.9615
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1379 - accuracy: 0.9596
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1171 - accuracy: 0.9638
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1166 - accuracy: 0.9628
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1227 - accuracy: 0.9608
Epoch 81/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0982 - accuracy: 0.9659
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0999 - accuracy: 0.9649
Epoch 83/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1453 - accuracy: 0.9548
Epoch 84/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3061 - accuracy: 0.9088
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1412 - accuracy: 0.9540
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1210 - accuracy: 0.9616
Epoch 87/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1256 - accuracy: 0.9618
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0830 - accuracy: 0.9744
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0929 - accuracy: 0.9693
Epoch 90/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0895 - accuracy: 0.9698
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0844 - accuracy: 0.9737
Epoch 92/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0964 - accuracy: 0.9691
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0838 - accuracy: 0.9746
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0905 - accuracy: 0.9708
Epoch 95/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0881 - accuracy: 0.9704
Epoch 96/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0777 - accuracy: 0.9746
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0988 - accuracy: 0.9679
Epoch 98/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0876 - accuracy: 0.9711
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0747 - accuracy: 0.9761
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1298 - accuracy: 0.9606
24/24 [==============================] - 0s 7ms/step - loss: 0.3996 - accuracy: 0.9003
Epoch 1/100
48/48 [==============================] - 1s 8ms/step - loss: 2.6317 - accuracy: 0.0922
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5266 - accuracy: 0.1102
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4492 - accuracy: 0.1411
Epoch 4/100
48/48 [==============================] - 0s 8ms/step - loss: 2.3737 - accuracy: 0.1671
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2784 - accuracy: 0.2273
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.0472 - accuracy: 0.3173
Epoch 7/100
48/48 [==============================] - 0s 8ms/step - loss: 1.9277 - accuracy: 0.3544
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.7787 - accuracy: 0.4124
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6109 - accuracy: 0.4702
Epoch 10/100
48/48 [==============================] - 0s 8ms/step - loss: 1.5169 - accuracy: 0.4973
Epoch 11/100
48/48 [==============================] - 0s 8ms/step - loss: 1.3918 - accuracy: 0.5411
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2903 - accuracy: 0.5742
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3405 - accuracy: 0.5597
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1130 - accuracy: 0.6312
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0851 - accuracy: 0.6544
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0564 - accuracy: 0.6602
Epoch 17/100
48/48 [==============================] - 0s 8ms/step - loss: 1.0000 - accuracy: 0.6749
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8751 - accuracy: 0.7132
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9246 - accuracy: 0.7041
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8207 - accuracy: 0.7335
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7282 - accuracy: 0.7637
Epoch 22/100
48/48 [==============================] - 0s 8ms/step - loss: 0.7410 - accuracy: 0.7599
Epoch 23/100
48/48 [==============================] - 0s 8ms/step - loss: 0.7421 - accuracy: 0.7568
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6084 - accuracy: 0.8000
Epoch 25/100
48/48 [==============================] - 0s 8ms/step - loss: 0.6253 - accuracy: 0.7955
Epoch 26/100
48/48 [==============================] - 0s 8ms/step - loss: 0.6060 - accuracy: 0.8006
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6103 - accuracy: 0.8066
Epoch 28/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5321 - accuracy: 0.8249
Epoch 29/100
48/48 [==============================] - 0s 8ms/step - loss: 0.4967 - accuracy: 0.8390
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5354 - accuracy: 0.8264
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5344 - accuracy: 0.8267
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4120 - accuracy: 0.8714
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4001 - accuracy: 0.8659
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3797 - accuracy: 0.8761
Epoch 35/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3869 - accuracy: 0.8777
Epoch 36/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3331 - accuracy: 0.8922
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3204 - accuracy: 0.8947
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3252 - accuracy: 0.8940
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3145 - accuracy: 0.8980
Epoch 40/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3979 - accuracy: 0.8749
Epoch 41/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2675 - accuracy: 0.9114
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2730 - accuracy: 0.9118
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2684 - accuracy: 0.9124
Epoch 44/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2610 - accuracy: 0.9178
Epoch 45/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2630 - accuracy: 0.9156
Epoch 46/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3624 - accuracy: 0.8822
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2255 - accuracy: 0.9286
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2410 - accuracy: 0.9231
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2008 - accuracy: 0.9335
Epoch 50/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2418 - accuracy: 0.9236
Epoch 51/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1955 - accuracy: 0.9382
Epoch 52/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1688 - accuracy: 0.9443
Epoch 53/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1747 - accuracy: 0.9414
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2202 - accuracy: 0.9286
Epoch 55/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1855 - accuracy: 0.9414
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1706 - accuracy: 0.9448
Epoch 57/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1682 - accuracy: 0.9458
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1447 - accuracy: 0.9548
Epoch 59/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1757 - accuracy: 0.9428
Epoch 60/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1787 - accuracy: 0.9414
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1411 - accuracy: 0.9551
Epoch 62/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1456 - accuracy: 0.9535
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1847 - accuracy: 0.9445
Epoch 64/100
48/48 [==============================] - 0s 8ms/step - loss: 0.4662 - accuracy: 0.8633
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1631 - accuracy: 0.9497
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1391 - accuracy: 0.9551
Epoch 67/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1646 - accuracy: 0.9505
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1196 - accuracy: 0.9633
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1205 - accuracy: 0.9595
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1240 - accuracy: 0.9636
Epoch 71/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0928 - accuracy: 0.9706
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1140 - accuracy: 0.9636
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1565 - accuracy: 0.9540
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1706 - accuracy: 0.9495
Epoch 75/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1246 - accuracy: 0.9623
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0923 - accuracy: 0.9704
Epoch 77/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0981 - accuracy: 0.9673
Epoch 78/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0952 - accuracy: 0.9704
Epoch 79/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0966 - accuracy: 0.9694
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0943 - accuracy: 0.9706
Epoch 81/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0845 - accuracy: 0.9723
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0860 - accuracy: 0.9729
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0981 - accuracy: 0.9671
Epoch 84/100
48/48 [==============================] - 0s 8ms/step - loss: 0.0893 - accuracy: 0.9718
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2802 - accuracy: 0.9184
Epoch 86/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1125 - accuracy: 0.9654
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0892 - accuracy: 0.9711
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0985 - accuracy: 0.9678
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0815 - accuracy: 0.9754
Epoch 90/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0768 - accuracy: 0.9751
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1044 - accuracy: 0.9686
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0874 - accuracy: 0.9734
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0769 - accuracy: 0.9752
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1115 - accuracy: 0.9656
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1451 - accuracy: 0.9568
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0722 - accuracy: 0.9784
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0766 - accuracy: 0.9749
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0876 - accuracy: 0.9736
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0739 - accuracy: 0.9754
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0722 - accuracy: 0.9769
24/24 [==============================] - 0s 4ms/step - loss: 0.4191 - accuracy: 0.9033
Epoch 1/100
48/48 [==============================] - 1s 11ms/step - loss: 2.6316 - accuracy: 0.1052
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5319 - accuracy: 0.1368
Epoch 3/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4577 - accuracy: 0.1647
Epoch 4/100
48/48 [==============================] - 1s 11ms/step - loss: 2.3308 - accuracy: 0.2233
Epoch 5/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1630 - accuracy: 0.2910
Epoch 6/100
48/48 [==============================] - 1s 10ms/step - loss: 2.0432 - accuracy: 0.3383
Epoch 7/100
48/48 [==============================] - 0s 10ms/step - loss: 1.9172 - accuracy: 0.3807
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8129 - accuracy: 0.4101
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6759 - accuracy: 0.4649
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5743 - accuracy: 0.4920
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5045 - accuracy: 0.5268
Epoch 12/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3519 - accuracy: 0.5598
Epoch 13/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3485 - accuracy: 0.5833
Epoch 14/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1963 - accuracy: 0.6188
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1209 - accuracy: 0.6427
Epoch 16/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0761 - accuracy: 0.6589
Epoch 17/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9922 - accuracy: 0.6849
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9199 - accuracy: 0.7046
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8505 - accuracy: 0.7280
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8000 - accuracy: 0.7403
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7482 - accuracy: 0.7629
Epoch 22/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6741 - accuracy: 0.7851
Epoch 23/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6266 - accuracy: 0.8033
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5942 - accuracy: 0.8127
Epoch 25/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5531 - accuracy: 0.8225
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5247 - accuracy: 0.8385
Epoch 27/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5301 - accuracy: 0.8416
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4664 - accuracy: 0.8534
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4698 - accuracy: 0.8594
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4031 - accuracy: 0.8725
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3722 - accuracy: 0.8809
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3774 - accuracy: 0.8829
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3342 - accuracy: 0.9000
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3325 - accuracy: 0.9021
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2963 - accuracy: 0.9078
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2541 - accuracy: 0.9196
Epoch 37/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2722 - accuracy: 0.9154
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2344 - accuracy: 0.9280
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2194 - accuracy: 0.9307
Epoch 40/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2446 - accuracy: 0.9247
Epoch 41/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1993 - accuracy: 0.9327
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2043 - accuracy: 0.9379
Epoch 43/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1966 - accuracy: 0.9389
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2055 - accuracy: 0.9377
Epoch 45/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1913 - accuracy: 0.9425
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1511 - accuracy: 0.9523
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1741 - accuracy: 0.9485
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1621 - accuracy: 0.9511
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1480 - accuracy: 0.9548
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1380 - accuracy: 0.9563
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1390 - accuracy: 0.9563
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1389 - accuracy: 0.9590
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1304 - accuracy: 0.9629
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1484 - accuracy: 0.9596
Epoch 55/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1183 - accuracy: 0.9603
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1295 - accuracy: 0.9631
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1109 - accuracy: 0.9661
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1181 - accuracy: 0.9634
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1016 - accuracy: 0.9689
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1048 - accuracy: 0.9671
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0983 - accuracy: 0.9706
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1065 - accuracy: 0.9696
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1171 - accuracy: 0.9634
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0912 - accuracy: 0.9727
Epoch 65/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0888 - accuracy: 0.9724
Epoch 66/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0866 - accuracy: 0.9729
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0981 - accuracy: 0.9701
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0978 - accuracy: 0.9706
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1059 - accuracy: 0.9698
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0771 - accuracy: 0.9767
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1155 - accuracy: 0.9676
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0896 - accuracy: 0.9722
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0846 - accuracy: 0.9751
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0798 - accuracy: 0.9752
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0857 - accuracy: 0.9757
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0859 - accuracy: 0.9761
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0914 - accuracy: 0.9741
Epoch 78/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0836 - accuracy: 0.9757
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0626 - accuracy: 0.9807
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0985 - accuracy: 0.9739
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0921 - accuracy: 0.9757
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0616 - accuracy: 0.9799
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0695 - accuracy: 0.9797
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0838 - accuracy: 0.9747
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0831 - accuracy: 0.9761
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0797 - accuracy: 0.9784
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0720 - accuracy: 0.9801
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0634 - accuracy: 0.9807
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1030 - accuracy: 0.9754
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0617 - accuracy: 0.9834
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0889 - accuracy: 0.9744
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0757 - accuracy: 0.9784
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0680 - accuracy: 0.9807
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0825 - accuracy: 0.9782
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0755 - accuracy: 0.9786
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0831 - accuracy: 0.9817
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0615 - accuracy: 0.9816
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0636 - accuracy: 0.9799
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0624 - accuracy: 0.9837
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0604 - accuracy: 0.9835
24/24 [==============================] - 0s 4ms/step - loss: 0.5894 - accuracy: 0.9013
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6373 - accuracy: 0.0982
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5803 - accuracy: 0.1266
Epoch 3/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4673 - accuracy: 0.1708
Epoch 4/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2909 - accuracy: 0.2466
Epoch 5/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1737 - accuracy: 0.2941
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0523 - accuracy: 0.3339
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 1.9458 - accuracy: 0.3720
Epoch 8/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8069 - accuracy: 0.4144
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6873 - accuracy: 0.4652
Epoch 10/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5893 - accuracy: 0.5041
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4913 - accuracy: 0.5233
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3599 - accuracy: 0.5699
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2628 - accuracy: 0.6034
Epoch 14/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1882 - accuracy: 0.6265
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1230 - accuracy: 0.6493
Epoch 16/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0417 - accuracy: 0.6767
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9269 - accuracy: 0.7124
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8420 - accuracy: 0.7318
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7890 - accuracy: 0.7521
Epoch 20/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7569 - accuracy: 0.7699
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6896 - accuracy: 0.7900
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6475 - accuracy: 0.7985
Epoch 23/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5800 - accuracy: 0.8164
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5829 - accuracy: 0.8214
Epoch 25/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5132 - accuracy: 0.8377
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4601 - accuracy: 0.8594
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4314 - accuracy: 0.8661
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3961 - accuracy: 0.8762
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3832 - accuracy: 0.8822
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3379 - accuracy: 0.8908
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3344 - accuracy: 0.8960
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3336 - accuracy: 0.8952
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2662 - accuracy: 0.9178
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2665 - accuracy: 0.9134
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2466 - accuracy: 0.9196
Epoch 36/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2583 - accuracy: 0.9211
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2562 - accuracy: 0.9264
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2297 - accuracy: 0.9314
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1925 - accuracy: 0.9385
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2233 - accuracy: 0.9340
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1871 - accuracy: 0.9405
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1898 - accuracy: 0.9482
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1556 - accuracy: 0.9518
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1695 - accuracy: 0.9493
Epoch 45/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1460 - accuracy: 0.9563
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1634 - accuracy: 0.9493
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1371 - accuracy: 0.9611
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1381 - accuracy: 0.9585
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1276 - accuracy: 0.9610
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1380 - accuracy: 0.9573
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1150 - accuracy: 0.9659
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1371 - accuracy: 0.9600
Epoch 53/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1324 - accuracy: 0.9633
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1429 - accuracy: 0.9620
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1075 - accuracy: 0.9661
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0986 - accuracy: 0.9694
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1103 - accuracy: 0.9704
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0919 - accuracy: 0.9724
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0961 - accuracy: 0.9696
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0884 - accuracy: 0.9737
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1250 - accuracy: 0.9664
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0988 - accuracy: 0.9704
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0966 - accuracy: 0.9728
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0728 - accuracy: 0.9761
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1125 - accuracy: 0.9686
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0856 - accuracy: 0.9723
Epoch 67/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0758 - accuracy: 0.9792
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0897 - accuracy: 0.9747
Epoch 69/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0746 - accuracy: 0.9751
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0935 - accuracy: 0.9713
Epoch 71/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0899 - accuracy: 0.9757
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0855 - accuracy: 0.9741
Epoch 73/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0784 - accuracy: 0.9776
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0907 - accuracy: 0.9752
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0719 - accuracy: 0.9787
Epoch 76/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0784 - accuracy: 0.9759
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0641 - accuracy: 0.9814
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0803 - accuracy: 0.9771
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0755 - accuracy: 0.9769
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0650 - accuracy: 0.9804
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0797 - accuracy: 0.9776
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0862 - accuracy: 0.9789
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0585 - accuracy: 0.9836
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0752 - accuracy: 0.9797
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0607 - accuracy: 0.9817
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0940 - accuracy: 0.9809
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0722 - accuracy: 0.9794
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0822 - accuracy: 0.9777
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0878 - accuracy: 0.9787
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0680 - accuracy: 0.9794
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0644 - accuracy: 0.9794
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0813 - accuracy: 0.9797
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0703 - accuracy: 0.9791
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0718 - accuracy: 0.9804
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0701 - accuracy: 0.9807
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0717 - accuracy: 0.9801
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0739 - accuracy: 0.9804
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0783 - accuracy: 0.9809
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0835 - accuracy: 0.9804
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0668 - accuracy: 0.9809
24/24 [==============================] - 0s 4ms/step - loss: 0.9046 - accuracy: 0.8388
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6388 - accuracy: 0.0975
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.6257 - accuracy: 0.1100
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5393 - accuracy: 0.1470
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4069 - accuracy: 0.2068
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2389 - accuracy: 0.2580
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1224 - accuracy: 0.3074
Epoch 7/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0136 - accuracy: 0.3444
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.9177 - accuracy: 0.3738
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8199 - accuracy: 0.4120
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7269 - accuracy: 0.4438
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5998 - accuracy: 0.4899
Epoch 12/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5142 - accuracy: 0.5110
Epoch 13/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3977 - accuracy: 0.5532
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3352 - accuracy: 0.5891
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2566 - accuracy: 0.5943
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1582 - accuracy: 0.6290
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1120 - accuracy: 0.6539
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0315 - accuracy: 0.6780
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9417 - accuracy: 0.7074
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9121 - accuracy: 0.7219
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7920 - accuracy: 0.7490
Epoch 22/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7582 - accuracy: 0.7599
Epoch 23/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7220 - accuracy: 0.7745
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6754 - accuracy: 0.7829
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6445 - accuracy: 0.7986
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6005 - accuracy: 0.8153
Epoch 27/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5307 - accuracy: 0.8314
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5121 - accuracy: 0.8355
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4766 - accuracy: 0.8518
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4758 - accuracy: 0.8481
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4193 - accuracy: 0.8681
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3841 - accuracy: 0.8794
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3644 - accuracy: 0.8882
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3364 - accuracy: 0.8917
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3374 - accuracy: 0.8975
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3346 - accuracy: 0.8968
Epoch 37/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2879 - accuracy: 0.9075
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2821 - accuracy: 0.9121
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2539 - accuracy: 0.9231
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2341 - accuracy: 0.9256
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2252 - accuracy: 0.9286
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2583 - accuracy: 0.9217
Epoch 43/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2128 - accuracy: 0.9287
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2066 - accuracy: 0.9369
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1732 - accuracy: 0.9450
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1878 - accuracy: 0.9445
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1930 - accuracy: 0.9440
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1807 - accuracy: 0.9399
Epoch 49/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1527 - accuracy: 0.9563
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1656 - accuracy: 0.9472
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1629 - accuracy: 0.9485
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1284 - accuracy: 0.9586
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1679 - accuracy: 0.9546
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1554 - accuracy: 0.9497
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1178 - accuracy: 0.9646
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1197 - accuracy: 0.9603
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1474 - accuracy: 0.9540
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1142 - accuracy: 0.9626
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1267 - accuracy: 0.9623
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1134 - accuracy: 0.9653
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1438 - accuracy: 0.9566
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1087 - accuracy: 0.9686
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0993 - accuracy: 0.9691
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1253 - accuracy: 0.9639
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0896 - accuracy: 0.9731
Epoch 66/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1157 - accuracy: 0.9674
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0979 - accuracy: 0.9701
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0919 - accuracy: 0.9731
Epoch 69/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1277 - accuracy: 0.9634
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0950 - accuracy: 0.9703
Epoch 71/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0847 - accuracy: 0.9742
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1072 - accuracy: 0.9698
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0793 - accuracy: 0.9787
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1011 - accuracy: 0.9678
Epoch 75/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1032 - accuracy: 0.9694
Epoch 76/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0773 - accuracy: 0.9772
Epoch 77/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0893 - accuracy: 0.9749
Epoch 78/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1153 - accuracy: 0.9704
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0954 - accuracy: 0.9734
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0917 - accuracy: 0.9757
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0799 - accuracy: 0.9784
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1025 - accuracy: 0.9729
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0778 - accuracy: 0.9761
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0871 - accuracy: 0.9751
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0861 - accuracy: 0.9767
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0904 - accuracy: 0.9754
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0828 - accuracy: 0.9746
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1007 - accuracy: 0.9742
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0598 - accuracy: 0.9831
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0874 - accuracy: 0.9769
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1065 - accuracy: 0.9719
Epoch 92/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0823 - accuracy: 0.9761
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0902 - accuracy: 0.9756
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0848 - accuracy: 0.9777
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0950 - accuracy: 0.9744
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0771 - accuracy: 0.9806
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0841 - accuracy: 0.9794
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0678 - accuracy: 0.9804
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0713 - accuracy: 0.9817
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0642 - accuracy: 0.9811
24/24 [==============================] - 0s 4ms/step - loss: 2.1242 - accuracy: 0.6952
Epoch 1/100
48/48 [==============================] - 2s 11ms/step - loss: 2.6355 - accuracy: 0.1012
Epoch 2/100
48/48 [==============================] - 1s 11ms/step - loss: 2.6084 - accuracy: 0.1183
Epoch 3/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5450 - accuracy: 0.1537
Epoch 4/100
48/48 [==============================] - 1s 12ms/step - loss: 2.4287 - accuracy: 0.2140
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.1964 - accuracy: 0.2793
Epoch 6/100
48/48 [==============================] - 1s 11ms/step - loss: 2.1694 - accuracy: 0.2981
Epoch 7/100
48/48 [==============================] - 1s 11ms/step - loss: 2.0065 - accuracy: 0.3433
Epoch 8/100
48/48 [==============================] - 1s 11ms/step - loss: 1.8579 - accuracy: 0.4013
Epoch 9/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7575 - accuracy: 0.4339
Epoch 10/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7261 - accuracy: 0.4503
Epoch 11/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4750 - accuracy: 0.5166
Epoch 12/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7954 - accuracy: 0.4506
Epoch 13/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3637 - accuracy: 0.5640
Epoch 14/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1997 - accuracy: 0.6208
Epoch 15/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1937 - accuracy: 0.6210
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.0362 - accuracy: 0.6675
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9917 - accuracy: 0.6806
Epoch 18/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9465 - accuracy: 0.6961
Epoch 19/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7994 - accuracy: 0.7469
Epoch 20/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7446 - accuracy: 0.7627
Epoch 21/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8512 - accuracy: 0.7366
Epoch 22/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6798 - accuracy: 0.7855
Epoch 23/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6275 - accuracy: 0.8028
Epoch 24/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5786 - accuracy: 0.8152
Epoch 25/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5439 - accuracy: 0.8282
Epoch 26/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5061 - accuracy: 0.8408
Epoch 27/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4472 - accuracy: 0.8589
Epoch 28/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4682 - accuracy: 0.8514
Epoch 29/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4570 - accuracy: 0.8554
Epoch 30/100
48/48 [==============================] - 1s 10ms/step - loss: 0.3626 - accuracy: 0.8842
Epoch 31/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5703 - accuracy: 0.8323
Epoch 32/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6760 - accuracy: 0.8043
Epoch 33/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8999 - accuracy: 0.7602
Epoch 34/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5788 - accuracy: 0.8365
Epoch 35/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3563 - accuracy: 0.8815
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 1.3720 - accuracy: 0.6820
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4861 - accuracy: 0.8465
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3939 - accuracy: 0.8787
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3233 - accuracy: 0.8991
Epoch 40/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2945 - accuracy: 0.9063
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2622 - accuracy: 0.9149
Epoch 42/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2334 - accuracy: 0.9247
Epoch 43/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2294 - accuracy: 0.9285
Epoch 44/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2243 - accuracy: 0.9277
Epoch 45/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2124 - accuracy: 0.9320
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2252 - accuracy: 0.9302
Epoch 47/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2013 - accuracy: 0.9330
Epoch 48/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1760 - accuracy: 0.9427
Epoch 49/100
48/48 [==============================] - 1s 13ms/step - loss: 0.1738 - accuracy: 0.9415
Epoch 50/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1710 - accuracy: 0.9498
Epoch 51/100
48/48 [==============================] - 1s 13ms/step - loss: 0.3581 - accuracy: 0.9021
Epoch 52/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1628 - accuracy: 0.9488
Epoch 53/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1453 - accuracy: 0.9503
Epoch 54/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1416 - accuracy: 0.9540
Epoch 55/100
48/48 [==============================] - 1s 13ms/step - loss: 0.1425 - accuracy: 0.9566
Epoch 56/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1432 - accuracy: 0.9555
Epoch 57/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1296 - accuracy: 0.9575
Epoch 58/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1216 - accuracy: 0.9588
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1186 - accuracy: 0.9628
Epoch 60/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1082 - accuracy: 0.9673
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1158 - accuracy: 0.9638
Epoch 62/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1115 - accuracy: 0.9643
Epoch 63/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1026 - accuracy: 0.9679
Epoch 64/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1088 - accuracy: 0.9663
Epoch 65/100
48/48 [==============================] - 1s 13ms/step - loss: 0.1374 - accuracy: 0.9570
Epoch 66/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0972 - accuracy: 0.9699
Epoch 67/100
48/48 [==============================] - 1s 13ms/step - loss: 0.1193 - accuracy: 0.9596
Epoch 68/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1112 - accuracy: 0.9626
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1297 - accuracy: 0.9601
Epoch 70/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1534 - accuracy: 0.9558
Epoch 71/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1169 - accuracy: 0.9608
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1010 - accuracy: 0.9664
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0867 - accuracy: 0.9732
Epoch 74/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0759 - accuracy: 0.9739
Epoch 75/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0871 - accuracy: 0.9722
Epoch 76/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0828 - accuracy: 0.9699
Epoch 77/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0855 - accuracy: 0.9731
Epoch 78/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0864 - accuracy: 0.9744
Epoch 79/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0782 - accuracy: 0.9736
Epoch 80/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0704 - accuracy: 0.9782
Epoch 81/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1600 - accuracy: 0.9576
Epoch 82/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0730 - accuracy: 0.9757
Epoch 83/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0642 - accuracy: 0.9806
Epoch 84/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0725 - accuracy: 0.9762
Epoch 85/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0729 - accuracy: 0.9777
Epoch 86/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0774 - accuracy: 0.9772
Epoch 87/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0842 - accuracy: 0.9722
Epoch 88/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0644 - accuracy: 0.9796
Epoch 89/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0569 - accuracy: 0.9844
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0680 - accuracy: 0.9786
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0588 - accuracy: 0.9814
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0628 - accuracy: 0.9809
Epoch 93/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0688 - accuracy: 0.9784
Epoch 94/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0632 - accuracy: 0.9797
Epoch 95/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0741 - accuracy: 0.9789
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2468 - accuracy: 0.9397
Epoch 97/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3218 - accuracy: 0.9192
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0875 - accuracy: 0.9747
Epoch 99/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0669 - accuracy: 0.9789
Epoch 100/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0689 - accuracy: 0.9772
24/24 [==============================] - 0s 4ms/step - loss: 0.4345 - accuracy: 0.8934
Epoch 1/100
48/48 [==============================] - 2s 11ms/step - loss: 2.6362 - accuracy: 0.0924
Epoch 2/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5621 - accuracy: 0.1241
Epoch 3/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5537 - accuracy: 0.1391
Epoch 4/100
48/48 [==============================] - 1s 11ms/step - loss: 2.4063 - accuracy: 0.2027
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.2147 - accuracy: 0.2735
Epoch 6/100
48/48 [==============================] - 1s 11ms/step - loss: 2.1290 - accuracy: 0.3185
Epoch 7/100
48/48 [==============================] - 1s 12ms/step - loss: 1.8792 - accuracy: 0.3888
Epoch 8/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7742 - accuracy: 0.4262
Epoch 9/100
48/48 [==============================] - 1s 11ms/step - loss: 1.6046 - accuracy: 0.4901
Epoch 10/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4971 - accuracy: 0.5207
Epoch 11/100
48/48 [==============================] - 1s 12ms/step - loss: 1.3658 - accuracy: 0.5669
Epoch 12/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3170 - accuracy: 0.5837
Epoch 13/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2794 - accuracy: 0.6061
Epoch 14/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1970 - accuracy: 0.6292
Epoch 15/100
48/48 [==============================] - 1s 11ms/step - loss: 1.6013 - accuracy: 0.5597
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.0195 - accuracy: 0.6803
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8886 - accuracy: 0.7126
Epoch 18/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8219 - accuracy: 0.7362
Epoch 19/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7234 - accuracy: 0.7721
Epoch 20/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6566 - accuracy: 0.7917
Epoch 21/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7904 - accuracy: 0.7609
Epoch 22/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5619 - accuracy: 0.8197
Epoch 23/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5287 - accuracy: 0.8340
Epoch 24/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5193 - accuracy: 0.8382
Epoch 25/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4074 - accuracy: 0.8704
Epoch 26/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4538 - accuracy: 0.8535
Epoch 27/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4000 - accuracy: 0.8756
Epoch 28/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3425 - accuracy: 0.8867
Epoch 29/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3364 - accuracy: 0.8903
Epoch 30/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3384 - accuracy: 0.8943
Epoch 31/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2682 - accuracy: 0.9141
Epoch 32/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4125 - accuracy: 0.8789
Epoch 33/100
48/48 [==============================] - 1s 13ms/step - loss: 0.2733 - accuracy: 0.9116
Epoch 34/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2323 - accuracy: 0.9246
Epoch 35/100
48/48 [==============================] - 1s 13ms/step - loss: 1.2552 - accuracy: 0.7122
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3361 - accuracy: 0.8975
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2789 - accuracy: 0.9083
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2300 - accuracy: 0.9247
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2080 - accuracy: 0.9360
Epoch 40/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1972 - accuracy: 0.9367
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1553 - accuracy: 0.9503
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1803 - accuracy: 0.9422
Epoch 43/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2146 - accuracy: 0.9322
Epoch 44/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1841 - accuracy: 0.9432
Epoch 45/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1381 - accuracy: 0.9551
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1474 - accuracy: 0.9525
Epoch 47/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1287 - accuracy: 0.9586
Epoch 48/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1200 - accuracy: 0.9606
Epoch 49/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1046 - accuracy: 0.9674
Epoch 50/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1650 - accuracy: 0.9465
Epoch 51/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1226 - accuracy: 0.9610
Epoch 52/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1114 - accuracy: 0.9651
Epoch 53/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0952 - accuracy: 0.9708
Epoch 54/100
48/48 [==============================] - 1s 13ms/step - loss: 0.5350 - accuracy: 0.8809
Epoch 55/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1432 - accuracy: 0.9558
Epoch 56/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1406 - accuracy: 0.9566
Epoch 57/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1890 - accuracy: 0.9500
Epoch 58/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1096 - accuracy: 0.9686
Epoch 59/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0868 - accuracy: 0.9752
Epoch 60/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1402 - accuracy: 0.9595
Epoch 61/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0914 - accuracy: 0.9719
Epoch 62/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0955 - accuracy: 0.9691
Epoch 63/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0810 - accuracy: 0.9723
Epoch 64/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0723 - accuracy: 0.9777
Epoch 65/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0721 - accuracy: 0.9759
Epoch 66/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0768 - accuracy: 0.9762
Epoch 67/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0722 - accuracy: 0.9802
Epoch 68/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0725 - accuracy: 0.9789
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0920 - accuracy: 0.9734
Epoch 70/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0687 - accuracy: 0.9757
Epoch 71/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0589 - accuracy: 0.9809
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7395 - accuracy: 0.6569
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3086 - accuracy: 0.9078
Epoch 74/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2005 - accuracy: 0.9395
Epoch 75/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1497 - accuracy: 0.9512
Epoch 76/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1398 - accuracy: 0.9551
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1300 - accuracy: 0.9596
Epoch 78/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0947 - accuracy: 0.9721
Epoch 79/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1019 - accuracy: 0.9671
Epoch 80/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0870 - accuracy: 0.9723
Epoch 81/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1042 - accuracy: 0.9678
Epoch 82/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0692 - accuracy: 0.9782
Epoch 83/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0728 - accuracy: 0.9794
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0687 - accuracy: 0.9802
Epoch 85/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0741 - accuracy: 0.9762
Epoch 86/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0614 - accuracy: 0.9817
Epoch 87/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4477 - accuracy: 0.9096
Epoch 88/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1113 - accuracy: 0.9666
Epoch 89/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0932 - accuracy: 0.9709
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0717 - accuracy: 0.9774
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0627 - accuracy: 0.9804
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8294 - accuracy: 0.8232
Epoch 93/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1421 - accuracy: 0.9561
Epoch 94/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1037 - accuracy: 0.9681
Epoch 95/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1051 - accuracy: 0.9679
Epoch 96/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0836 - accuracy: 0.9741
Epoch 97/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0699 - accuracy: 0.9792
Epoch 98/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0713 - accuracy: 0.9801
Epoch 99/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0632 - accuracy: 0.9799
Epoch 100/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0507 - accuracy: 0.9847
24/24 [==============================] - 0s 4ms/step - loss: 0.3567 - accuracy: 0.9069
Epoch 1/100
48/48 [==============================] - 2s 15ms/step - loss: 2.6386 - accuracy: 0.0927
Epoch 2/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5824 - accuracy: 0.1135
Epoch 3/100
48/48 [==============================] - 1s 12ms/step - loss: 2.6204 - accuracy: 0.1331
Epoch 4/100
48/48 [==============================] - 1s 13ms/step - loss: 2.4047 - accuracy: 0.1994
Epoch 5/100
48/48 [==============================] - 1s 11ms/step - loss: 2.3656 - accuracy: 0.2220
Epoch 6/100
48/48 [==============================] - 1s 12ms/step - loss: 2.1206 - accuracy: 0.2987
Epoch 7/100
48/48 [==============================] - 1s 11ms/step - loss: 2.1341 - accuracy: 0.2924
Epoch 8/100
48/48 [==============================] - 1s 11ms/step - loss: 1.9668 - accuracy: 0.3527
Epoch 9/100
48/48 [==============================] - 1s 13ms/step - loss: 1.8585 - accuracy: 0.3947
Epoch 10/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7637 - accuracy: 0.4360
Epoch 11/100
48/48 [==============================] - 1s 12ms/step - loss: 1.8258 - accuracy: 0.4263
Epoch 12/100
48/48 [==============================] - 1s 12ms/step - loss: 1.5386 - accuracy: 0.4936
Epoch 13/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4211 - accuracy: 0.5403
Epoch 14/100
48/48 [==============================] - 1s 12ms/step - loss: 1.3231 - accuracy: 0.5742
Epoch 15/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2245 - accuracy: 0.6066
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1473 - accuracy: 0.6360
Epoch 17/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1412 - accuracy: 0.6358
Epoch 18/100
48/48 [==============================] - 1s 11ms/step - loss: 1.0121 - accuracy: 0.6827
Epoch 19/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9118 - accuracy: 0.7139
Epoch 20/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9995 - accuracy: 0.6915
Epoch 21/100
48/48 [==============================] - 1s 13ms/step - loss: 0.8545 - accuracy: 0.7343
Epoch 22/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7461 - accuracy: 0.7637
Epoch 23/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8038 - accuracy: 0.7473
Epoch 24/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6486 - accuracy: 0.7898
Epoch 25/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9666 - accuracy: 0.7214
Epoch 26/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6345 - accuracy: 0.7996
Epoch 27/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8459 - accuracy: 0.7586
Epoch 28/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5491 - accuracy: 0.8236
Epoch 29/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5594 - accuracy: 0.8261
Epoch 30/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4422 - accuracy: 0.8563
Epoch 31/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4183 - accuracy: 0.8658
Epoch 32/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3993 - accuracy: 0.8697
Epoch 33/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3694 - accuracy: 0.8814
Epoch 34/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3551 - accuracy: 0.8827
Epoch 35/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8237 - accuracy: 0.7749
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3828 - accuracy: 0.8795
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4518 - accuracy: 0.8648
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3046 - accuracy: 0.8995
Epoch 39/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2931 - accuracy: 0.9045
Epoch 40/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2452 - accuracy: 0.9217
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2502 - accuracy: 0.9184
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2299 - accuracy: 0.9254
Epoch 43/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2037 - accuracy: 0.9309
Epoch 44/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2180 - accuracy: 0.9277
Epoch 45/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1904 - accuracy: 0.9384
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3751 - accuracy: 0.8982
Epoch 47/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2175 - accuracy: 0.9312
Epoch 48/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1936 - accuracy: 0.9392
Epoch 49/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1659 - accuracy: 0.9468
Epoch 50/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1603 - accuracy: 0.9487
Epoch 51/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1369 - accuracy: 0.9550
Epoch 52/100
48/48 [==============================] - 1s 13ms/step - loss: 0.1585 - accuracy: 0.9507
Epoch 53/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1509 - accuracy: 0.9518
Epoch 54/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1191 - accuracy: 0.9618
Epoch 55/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1508 - accuracy: 0.9533
Epoch 56/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1237 - accuracy: 0.9615
Epoch 57/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1157 - accuracy: 0.9641
Epoch 58/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1424 - accuracy: 0.9561
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1154 - accuracy: 0.9621
Epoch 60/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1225 - accuracy: 0.9580
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1022 - accuracy: 0.9663
Epoch 62/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1138 - accuracy: 0.9631
Epoch 63/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3921 - accuracy: 0.9033
Epoch 64/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1371 - accuracy: 0.9558
Epoch 65/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1250 - accuracy: 0.9634
Epoch 66/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0966 - accuracy: 0.9683
Epoch 67/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0848 - accuracy: 0.9737
Epoch 68/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0901 - accuracy: 0.9726
Epoch 69/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0791 - accuracy: 0.9746
Epoch 70/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0978 - accuracy: 0.9714
Epoch 71/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0879 - accuracy: 0.9733
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0879 - accuracy: 0.9723
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0886 - accuracy: 0.9713
Epoch 74/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0829 - accuracy: 0.9762
Epoch 75/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0994 - accuracy: 0.9694
Epoch 76/100
48/48 [==============================] - 1s 13ms/step - loss: 0.0894 - accuracy: 0.9751
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0812 - accuracy: 0.9723
Epoch 78/100
48/48 [==============================] - 1s 13ms/step - loss: 0.0671 - accuracy: 0.9789
Epoch 79/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0803 - accuracy: 0.9742
Epoch 80/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0848 - accuracy: 0.9742
Epoch 81/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0802 - accuracy: 0.9744
Epoch 82/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0739 - accuracy: 0.9767
Epoch 83/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6251 - accuracy: 0.8598
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1137 - accuracy: 0.9664
Epoch 85/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0863 - accuracy: 0.9711
Epoch 86/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0820 - accuracy: 0.9754
Epoch 87/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0796 - accuracy: 0.9739
Epoch 88/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0753 - accuracy: 0.9771
Epoch 89/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0596 - accuracy: 0.9809
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0686 - accuracy: 0.9774
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0711 - accuracy: 0.9784
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0620 - accuracy: 0.9807
Epoch 93/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0638 - accuracy: 0.9801
Epoch 94/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0536 - accuracy: 0.9842
Epoch 95/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0636 - accuracy: 0.9811
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0555 - accuracy: 0.9824
Epoch 97/100
48/48 [==============================] - 1s 13ms/step - loss: 0.3839 - accuracy: 0.9118
Epoch 98/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0916 - accuracy: 0.9733
Epoch 99/100
48/48 [==============================] - 1s 13ms/step - loss: 0.2027 - accuracy: 0.9490
Epoch 100/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1150 - accuracy: 0.9649
24/24 [==============================] - 0s 5ms/step - loss: 0.3625 - accuracy: 0.9056
Epoch 1/100
48/48 [==============================] - 1s 8ms/step - loss: 2.6345 - accuracy: 0.0876
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5416 - accuracy: 0.1238
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5281 - accuracy: 0.1412
Epoch 4/100
48/48 [==============================] - 0s 8ms/step - loss: 2.3914 - accuracy: 0.1775
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2287 - accuracy: 0.2556
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1241 - accuracy: 0.2956
Epoch 7/100
48/48 [==============================] - 0s 8ms/step - loss: 1.9593 - accuracy: 0.3518
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8545 - accuracy: 0.3932
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6812 - accuracy: 0.4425
Epoch 10/100
48/48 [==============================] - 0s 8ms/step - loss: 1.5725 - accuracy: 0.4899
Epoch 11/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4285 - accuracy: 0.5336
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3694 - accuracy: 0.5550
Epoch 13/100
48/48 [==============================] - 1s 10ms/step - loss: 1.2726 - accuracy: 0.5784
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2035 - accuracy: 0.6045
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1345 - accuracy: 0.6258
Epoch 16/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5423 - accuracy: 0.5169
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2401 - accuracy: 0.6065
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0521 - accuracy: 0.6560
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0020 - accuracy: 0.6813
Epoch 20/100
48/48 [==============================] - 1s 11ms/step - loss: 1.0515 - accuracy: 0.6552
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9308 - accuracy: 0.6962
Epoch 22/100
48/48 [==============================] - 0s 8ms/step - loss: 0.8731 - accuracy: 0.7114
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7994 - accuracy: 0.7394
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7654 - accuracy: 0.7562
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7122 - accuracy: 0.7619
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8392 - accuracy: 0.7346
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6464 - accuracy: 0.7858
Epoch 28/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6308 - accuracy: 0.7963
Epoch 29/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5988 - accuracy: 0.8059
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5506 - accuracy: 0.8239
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5609 - accuracy: 0.8129
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7540 - accuracy: 0.7644
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5669 - accuracy: 0.8175
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4833 - accuracy: 0.8456
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5037 - accuracy: 0.8335
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4251 - accuracy: 0.8591
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5708 - accuracy: 0.8076
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5068 - accuracy: 0.8298
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4482 - accuracy: 0.8538
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3897 - accuracy: 0.8721
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4024 - accuracy: 0.8669
Epoch 42/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3884 - accuracy: 0.8712
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3694 - accuracy: 0.8817
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3713 - accuracy: 0.8822
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3384 - accuracy: 0.8873
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3159 - accuracy: 0.8946
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3070 - accuracy: 0.8996
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3421 - accuracy: 0.8877
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2959 - accuracy: 0.9020
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2814 - accuracy: 0.9116
Epoch 51/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2727 - accuracy: 0.9151
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2988 - accuracy: 0.9023
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2625 - accuracy: 0.9131
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2626 - accuracy: 0.9139
Epoch 55/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2562 - accuracy: 0.9159
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2560 - accuracy: 0.9151
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4821 - accuracy: 0.8496
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4544 - accuracy: 0.8558
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2781 - accuracy: 0.9098
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2622 - accuracy: 0.9176
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2874 - accuracy: 0.9038
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2621 - accuracy: 0.9146
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2225 - accuracy: 0.9300
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2100 - accuracy: 0.9325
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2035 - accuracy: 0.9340
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1900 - accuracy: 0.9382
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2195 - accuracy: 0.9292
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1931 - accuracy: 0.9337
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1837 - accuracy: 0.9400
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1892 - accuracy: 0.9379
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1951 - accuracy: 0.9372
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1700 - accuracy: 0.9450
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1735 - accuracy: 0.9428
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2015 - accuracy: 0.9334
Epoch 75/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1925 - accuracy: 0.9412
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1700 - accuracy: 0.9427
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1643 - accuracy: 0.9475
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1610 - accuracy: 0.9485
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1505 - accuracy: 0.9501
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4968 - accuracy: 0.8514
Epoch 81/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2214 - accuracy: 0.9285
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1754 - accuracy: 0.9457
Epoch 83/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1725 - accuracy: 0.9427
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2074 - accuracy: 0.9329
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1612 - accuracy: 0.9458
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1471 - accuracy: 0.9498
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1814 - accuracy: 0.9428
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1592 - accuracy: 0.9503
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1451 - accuracy: 0.9556
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1511 - accuracy: 0.9492
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2176 - accuracy: 0.9337
Epoch 92/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4598 - accuracy: 0.8649
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1815 - accuracy: 0.9437
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1850 - accuracy: 0.9427
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3497 - accuracy: 0.8942
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2296 - accuracy: 0.9227
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1565 - accuracy: 0.9478
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1459 - accuracy: 0.9563
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1383 - accuracy: 0.9545
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1300 - accuracy: 0.9600
24/24 [==============================] - 0s 4ms/step - loss: 0.3484 - accuracy: 0.9120
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6478 - accuracy: 0.0879
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5890 - accuracy: 0.1113
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5008 - accuracy: 0.1377
Epoch 4/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4010 - accuracy: 0.1608
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2943 - accuracy: 0.1922
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1759 - accuracy: 0.2527
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 1.9628 - accuracy: 0.3369
Epoch 8/100
48/48 [==============================] - 0s 10ms/step - loss: 1.9064 - accuracy: 0.3658
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 1.7794 - accuracy: 0.4110
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6464 - accuracy: 0.4597
Epoch 11/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4728 - accuracy: 0.5155
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4564 - accuracy: 0.5285
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2947 - accuracy: 0.5795
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2925 - accuracy: 0.5747
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1625 - accuracy: 0.6195
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1500 - accuracy: 0.6303
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0033 - accuracy: 0.6772
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1194 - accuracy: 0.6393
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9234 - accuracy: 0.7036
Epoch 20/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8618 - accuracy: 0.7214
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8639 - accuracy: 0.7066
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7963 - accuracy: 0.7390
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7459 - accuracy: 0.7576
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6516 - accuracy: 0.7839
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6503 - accuracy: 0.7888
Epoch 26/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7125 - accuracy: 0.7719
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5669 - accuracy: 0.8182
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5862 - accuracy: 0.8081
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5314 - accuracy: 0.8289
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4934 - accuracy: 0.8388
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4893 - accuracy: 0.8393
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6205 - accuracy: 0.8069
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5122 - accuracy: 0.8339
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5075 - accuracy: 0.8332
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4242 - accuracy: 0.8628
Epoch 36/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4093 - accuracy: 0.8707
Epoch 37/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3939 - accuracy: 0.8719
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3672 - accuracy: 0.8814
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3689 - accuracy: 0.8842
Epoch 40/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3390 - accuracy: 0.8925
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3440 - accuracy: 0.8895
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3026 - accuracy: 0.9023
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2887 - accuracy: 0.9070
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2892 - accuracy: 0.9058
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2707 - accuracy: 0.9103
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3110 - accuracy: 0.8983
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2793 - accuracy: 0.9143
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2462 - accuracy: 0.9198
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3253 - accuracy: 0.8970
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4704 - accuracy: 0.8536
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2960 - accuracy: 0.9030
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2530 - accuracy: 0.9183
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3039 - accuracy: 0.9025
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3713 - accuracy: 0.8814
Epoch 55/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2372 - accuracy: 0.9219
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2291 - accuracy: 0.9292
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2235 - accuracy: 0.9322
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2382 - accuracy: 0.9246
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1990 - accuracy: 0.9334
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2118 - accuracy: 0.9320
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1959 - accuracy: 0.9390
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1786 - accuracy: 0.9420
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1958 - accuracy: 0.9402
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1969 - accuracy: 0.9387
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2505 - accuracy: 0.9219
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1842 - accuracy: 0.9423
Epoch 67/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1586 - accuracy: 0.9487
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1718 - accuracy: 0.9460
Epoch 69/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1491 - accuracy: 0.9518
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1508 - accuracy: 0.9507
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1685 - accuracy: 0.9488
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1752 - accuracy: 0.9410
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1725 - accuracy: 0.9422
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1471 - accuracy: 0.9510
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1518 - accuracy: 0.9520
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1587 - accuracy: 0.9480
Epoch 77/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1852 - accuracy: 0.9414
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2364 - accuracy: 0.9272
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1322 - accuracy: 0.9585
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1430 - accuracy: 0.9546
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1244 - accuracy: 0.9610
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1807 - accuracy: 0.9420
Epoch 83/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1349 - accuracy: 0.9568
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1126 - accuracy: 0.9641
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1003 - accuracy: 0.9669
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1351 - accuracy: 0.9585
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1438 - accuracy: 0.9548
Epoch 88/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1257 - accuracy: 0.9603
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1206 - accuracy: 0.9630
Epoch 90/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1212 - accuracy: 0.9620
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1146 - accuracy: 0.9651
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1099 - accuracy: 0.9638
Epoch 93/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1135 - accuracy: 0.9653
Epoch 94/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1200 - accuracy: 0.9634
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1082 - accuracy: 0.9681
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1439 - accuracy: 0.9570
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1313 - accuracy: 0.9610
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1039 - accuracy: 0.9693
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1114 - accuracy: 0.9643
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1786 - accuracy: 0.9462
24/24 [==============================] - 0s 4ms/step - loss: 0.3235 - accuracy: 0.9156
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6307 - accuracy: 0.0964
Epoch 2/100
48/48 [==============================] - 0s 8ms/step - loss: 2.5219 - accuracy: 0.1075
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4405 - accuracy: 0.1430
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.3475 - accuracy: 0.1774
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1740 - accuracy: 0.2495
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0785 - accuracy: 0.2982
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8907 - accuracy: 0.3662
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 1.7761 - accuracy: 0.4012
Epoch 9/100
48/48 [==============================] - 0s 8ms/step - loss: 1.6601 - accuracy: 0.4464
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5544 - accuracy: 0.4875
Epoch 11/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4156 - accuracy: 0.5340
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3344 - accuracy: 0.5621
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3043 - accuracy: 0.5775
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1180 - accuracy: 0.6353
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0499 - accuracy: 0.6549
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0075 - accuracy: 0.6700
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1121 - accuracy: 0.6365
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9143 - accuracy: 0.7009
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8846 - accuracy: 0.7086
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8015 - accuracy: 0.7463
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7834 - accuracy: 0.7513
Epoch 22/100
48/48 [==============================] - 0s 8ms/step - loss: 0.7431 - accuracy: 0.7608
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7375 - accuracy: 0.7603
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6308 - accuracy: 0.7976
Epoch 25/100
48/48 [==============================] - 0s 8ms/step - loss: 0.6246 - accuracy: 0.7955
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5969 - accuracy: 0.8061
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6460 - accuracy: 0.7898
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5866 - accuracy: 0.8138
Epoch 29/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5198 - accuracy: 0.8352
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4953 - accuracy: 0.8448
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5299 - accuracy: 0.8284
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4755 - accuracy: 0.8457
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4712 - accuracy: 0.8485
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4126 - accuracy: 0.8659
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3803 - accuracy: 0.8789
Epoch 36/100
48/48 [==============================] - 0s 8ms/step - loss: 0.4124 - accuracy: 0.8674
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4206 - accuracy: 0.8624
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3608 - accuracy: 0.8895
Epoch 39/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3475 - accuracy: 0.8862
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3451 - accuracy: 0.8908
Epoch 41/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3681 - accuracy: 0.8804
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3790 - accuracy: 0.8782
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3313 - accuracy: 0.8952
Epoch 44/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2796 - accuracy: 0.9100
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2658 - accuracy: 0.9141
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3469 - accuracy: 0.8887
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2954 - accuracy: 0.9075
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2502 - accuracy: 0.9178
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3192 - accuracy: 0.8958
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3087 - accuracy: 0.9001
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2522 - accuracy: 0.9174
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2388 - accuracy: 0.9244
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2228 - accuracy: 0.9296
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2288 - accuracy: 0.9262
Epoch 55/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2204 - accuracy: 0.9257
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2099 - accuracy: 0.9320
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2820 - accuracy: 0.9046
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2259 - accuracy: 0.9264
Epoch 59/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1851 - accuracy: 0.9404
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1905 - accuracy: 0.9395
Epoch 61/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1954 - accuracy: 0.9349
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2102 - accuracy: 0.9335
Epoch 63/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2376 - accuracy: 0.9242
Epoch 64/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2828 - accuracy: 0.9139
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1874 - accuracy: 0.9414
Epoch 66/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2140 - accuracy: 0.9299
Epoch 67/100
48/48 [==============================] - 0s 8ms/step - loss: 0.2149 - accuracy: 0.9311
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1837 - accuracy: 0.9414
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1768 - accuracy: 0.9463
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2049 - accuracy: 0.9334
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1453 - accuracy: 0.9530
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2960 - accuracy: 0.9116
Epoch 73/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1707 - accuracy: 0.9452
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1400 - accuracy: 0.9545
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1359 - accuracy: 0.9533
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2150 - accuracy: 0.9339
Epoch 77/100
48/48 [==============================] - 0s 8ms/step - loss: 0.1482 - accuracy: 0.9530
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1574 - accuracy: 0.9505
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2398 - accuracy: 0.9247
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1602 - accuracy: 0.9497
Epoch 81/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1382 - accuracy: 0.9575
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1837 - accuracy: 0.9404
Epoch 83/100
48/48 [==============================] - 0s 8ms/step - loss: 0.3232 - accuracy: 0.9003
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1582 - accuracy: 0.9487
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1520 - accuracy: 0.9528
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1525 - accuracy: 0.9526
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1409 - accuracy: 0.9536
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1291 - accuracy: 0.9591
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1220 - accuracy: 0.9608
Epoch 90/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1098 - accuracy: 0.9644
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1179 - accuracy: 0.9626
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1155 - accuracy: 0.9639
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1282 - accuracy: 0.9578
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1286 - accuracy: 0.9586
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.0919 - accuracy: 0.9709
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1020 - accuracy: 0.9656
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1027 - accuracy: 0.9656
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1428 - accuracy: 0.9573
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3779 - accuracy: 0.8860
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1505 - accuracy: 0.9535
24/24 [==============================] - 0s 4ms/step - loss: 0.3759 - accuracy: 0.8946
Epoch 1/100
48/48 [==============================] - 2s 12ms/step - loss: 2.6327 - accuracy: 0.1017
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5506 - accuracy: 0.1369
Epoch 3/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5031 - accuracy: 0.1492
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.3834 - accuracy: 0.1984
Epoch 5/100
48/48 [==============================] - 1s 11ms/step - loss: 2.2858 - accuracy: 0.2527
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1278 - accuracy: 0.2984
Epoch 7/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0460 - accuracy: 0.3348
Epoch 8/100
48/48 [==============================] - 0s 10ms/step - loss: 1.9106 - accuracy: 0.3822
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8447 - accuracy: 0.4074
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7337 - accuracy: 0.4458
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6180 - accuracy: 0.4811
Epoch 12/100
48/48 [==============================] - 1s 10ms/step - loss: 1.5300 - accuracy: 0.5076
Epoch 13/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4887 - accuracy: 0.5201
Epoch 14/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3509 - accuracy: 0.5583
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3048 - accuracy: 0.5808
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2222 - accuracy: 0.6108
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1193 - accuracy: 0.6436
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0773 - accuracy: 0.6537
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9966 - accuracy: 0.6818
Epoch 20/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9903 - accuracy: 0.6901
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9020 - accuracy: 0.7160
Epoch 22/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8346 - accuracy: 0.7398
Epoch 23/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7837 - accuracy: 0.7494
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7562 - accuracy: 0.7597
Epoch 25/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7423 - accuracy: 0.7664
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6590 - accuracy: 0.7881
Epoch 27/100
48/48 [==============================] - 1s 10ms/step - loss: 0.6550 - accuracy: 0.7918
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5878 - accuracy: 0.8159
Epoch 29/100
48/48 [==============================] - 1s 10ms/step - loss: 0.5755 - accuracy: 0.8121
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5332 - accuracy: 0.8318
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5042 - accuracy: 0.8362
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5049 - accuracy: 0.8421
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4629 - accuracy: 0.8599
Epoch 34/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4181 - accuracy: 0.8682
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4450 - accuracy: 0.8629
Epoch 36/100
48/48 [==============================] - 1s 10ms/step - loss: 0.3979 - accuracy: 0.8707
Epoch 37/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3923 - accuracy: 0.8752
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3565 - accuracy: 0.8902
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3609 - accuracy: 0.8848
Epoch 40/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3256 - accuracy: 0.9010
Epoch 41/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3287 - accuracy: 0.8963
Epoch 42/100
48/48 [==============================] - 1s 10ms/step - loss: 0.3087 - accuracy: 0.9018
Epoch 43/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3041 - accuracy: 0.9023
Epoch 44/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2793 - accuracy: 0.9121
Epoch 45/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2923 - accuracy: 0.9078
Epoch 46/100
48/48 [==============================] - 1s 10ms/step - loss: 0.2868 - accuracy: 0.9114
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2584 - accuracy: 0.9204
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2517 - accuracy: 0.9216
Epoch 49/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2472 - accuracy: 0.9194
Epoch 50/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2317 - accuracy: 0.9272
Epoch 51/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2360 - accuracy: 0.9271
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2342 - accuracy: 0.9300
Epoch 53/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2295 - accuracy: 0.9339
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2002 - accuracy: 0.9408
Epoch 55/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1993 - accuracy: 0.9384
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2182 - accuracy: 0.9389
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2077 - accuracy: 0.9349
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1874 - accuracy: 0.9390
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1856 - accuracy: 0.9427
Epoch 60/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1684 - accuracy: 0.9485
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2002 - accuracy: 0.9433
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1696 - accuracy: 0.9510
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1596 - accuracy: 0.9518
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1729 - accuracy: 0.9453
Epoch 65/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1543 - accuracy: 0.9546
Epoch 66/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1525 - accuracy: 0.9556
Epoch 67/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1698 - accuracy: 0.9495
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1536 - accuracy: 0.9541
Epoch 69/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1510 - accuracy: 0.9545
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1532 - accuracy: 0.9553
Epoch 71/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1296 - accuracy: 0.9596
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1466 - accuracy: 0.9575
Epoch 73/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1559 - accuracy: 0.9503
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1391 - accuracy: 0.9590
Epoch 75/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1428 - accuracy: 0.9575
Epoch 76/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1537 - accuracy: 0.9581
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1442 - accuracy: 0.9563
Epoch 78/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1425 - accuracy: 0.9570
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1246 - accuracy: 0.9631
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1376 - accuracy: 0.9610
Epoch 81/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1336 - accuracy: 0.9613
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1549 - accuracy: 0.9598
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1350 - accuracy: 0.9605
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0995 - accuracy: 0.9706
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1342 - accuracy: 0.9644
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1404 - accuracy: 0.9614
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1202 - accuracy: 0.9649
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1316 - accuracy: 0.9623
Epoch 89/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1224 - accuracy: 0.9639
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1196 - accuracy: 0.9634
Epoch 91/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1282 - accuracy: 0.9610
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1133 - accuracy: 0.9699
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1061 - accuracy: 0.9698
Epoch 94/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1055 - accuracy: 0.9679
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1341 - accuracy: 0.9626
Epoch 96/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1072 - accuracy: 0.9674
Epoch 97/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1204 - accuracy: 0.9628
Epoch 98/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1250 - accuracy: 0.9661
Epoch 99/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1277 - accuracy: 0.9624
Epoch 100/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1206 - accuracy: 0.9696
24/24 [==============================] - 0s 4ms/step - loss: 0.4361 - accuracy: 0.9003
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6414 - accuracy: 0.0947
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5718 - accuracy: 0.1223
Epoch 3/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5012 - accuracy: 0.1540
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.3900 - accuracy: 0.2157
Epoch 5/100
48/48 [==============================] - 0s 10ms/step - loss: 2.2269 - accuracy: 0.2711
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1133 - accuracy: 0.3167
Epoch 7/100
48/48 [==============================] - 1s 10ms/step - loss: 2.0144 - accuracy: 0.3479
Epoch 8/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8801 - accuracy: 0.3986
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7909 - accuracy: 0.4283
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7007 - accuracy: 0.4574
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6305 - accuracy: 0.4775
Epoch 12/100
48/48 [==============================] - 1s 11ms/step - loss: 1.5455 - accuracy: 0.5066
Epoch 13/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4195 - accuracy: 0.5557
Epoch 14/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3370 - accuracy: 0.5790
Epoch 15/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2769 - accuracy: 0.5910
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1889 - accuracy: 0.6182
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1403 - accuracy: 0.6347
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0610 - accuracy: 0.6601
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0099 - accuracy: 0.6872
Epoch 20/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9351 - accuracy: 0.7043
Epoch 21/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8987 - accuracy: 0.7154
Epoch 22/100
48/48 [==============================] - 1s 10ms/step - loss: 0.8353 - accuracy: 0.7372
Epoch 23/100
48/48 [==============================] - 1s 10ms/step - loss: 0.7950 - accuracy: 0.7496
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7612 - accuracy: 0.7608
Epoch 25/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6916 - accuracy: 0.7815
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6460 - accuracy: 0.7996
Epoch 27/100
48/48 [==============================] - 1s 10ms/step - loss: 0.6441 - accuracy: 0.7970
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5939 - accuracy: 0.8134
Epoch 29/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5501 - accuracy: 0.8270
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5281 - accuracy: 0.8350
Epoch 31/100
48/48 [==============================] - 1s 10ms/step - loss: 0.5143 - accuracy: 0.8397
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4856 - accuracy: 0.8457
Epoch 33/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4687 - accuracy: 0.8548
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4266 - accuracy: 0.8671
Epoch 35/100
48/48 [==============================] - 1s 10ms/step - loss: 0.4205 - accuracy: 0.8704
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4189 - accuracy: 0.8648
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3774 - accuracy: 0.8777
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3497 - accuracy: 0.8905
Epoch 39/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3698 - accuracy: 0.8845
Epoch 40/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3486 - accuracy: 0.8918
Epoch 41/100
48/48 [==============================] - 1s 10ms/step - loss: 0.3359 - accuracy: 0.8938
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2871 - accuracy: 0.9096
Epoch 43/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3188 - accuracy: 0.9006
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2952 - accuracy: 0.9101
Epoch 45/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2685 - accuracy: 0.9159
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2602 - accuracy: 0.9212
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2589 - accuracy: 0.9227
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2411 - accuracy: 0.9234
Epoch 49/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2449 - accuracy: 0.9267
Epoch 50/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2491 - accuracy: 0.9239
Epoch 51/100
48/48 [==============================] - 1s 10ms/step - loss: 0.2357 - accuracy: 0.9297
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2106 - accuracy: 0.9340
Epoch 53/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2267 - accuracy: 0.9292
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1920 - accuracy: 0.9420
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1976 - accuracy: 0.9385
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2254 - accuracy: 0.9360
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1850 - accuracy: 0.9437
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2118 - accuracy: 0.9329
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1795 - accuracy: 0.9425
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1940 - accuracy: 0.9450
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1812 - accuracy: 0.9470
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1976 - accuracy: 0.9382
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1642 - accuracy: 0.9490
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1631 - accuracy: 0.9475
Epoch 65/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1662 - accuracy: 0.9498
Epoch 66/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1770 - accuracy: 0.9522
Epoch 67/100
48/48 [==============================] - 1s 10ms/step - loss: 0.2138 - accuracy: 0.9423
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1470 - accuracy: 0.9578
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1494 - accuracy: 0.9538
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1688 - accuracy: 0.9507
Epoch 71/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1292 - accuracy: 0.9600
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1426 - accuracy: 0.9588
Epoch 73/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1439 - accuracy: 0.9546
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1455 - accuracy: 0.9560
Epoch 75/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1336 - accuracy: 0.9575
Epoch 76/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1278 - accuracy: 0.9633
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1418 - accuracy: 0.9581
Epoch 78/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1365 - accuracy: 0.9590
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1435 - accuracy: 0.9585
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1301 - accuracy: 0.9620
Epoch 81/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1325 - accuracy: 0.9603
Epoch 82/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1434 - accuracy: 0.9588
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1264 - accuracy: 0.9591
Epoch 84/100
48/48 [==============================] - 1s 10ms/step - loss: 0.1305 - accuracy: 0.9606
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1443 - accuracy: 0.9605
Epoch 86/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1281 - accuracy: 0.9636
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1336 - accuracy: 0.9610
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1050 - accuracy: 0.9689
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1342 - accuracy: 0.9616
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1292 - accuracy: 0.9611
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1143 - accuracy: 0.9651
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1404 - accuracy: 0.9628
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1101 - accuracy: 0.9676
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1146 - accuracy: 0.9683
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1256 - accuracy: 0.9648
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1155 - accuracy: 0.9651
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1035 - accuracy: 0.9708
Epoch 98/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1255 - accuracy: 0.9634
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1176 - accuracy: 0.9681
Epoch 100/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1179 - accuracy: 0.9673
24/24 [==============================] - 0s 4ms/step - loss: 0.6524 - accuracy: 0.8774
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6441 - accuracy: 0.0960
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5524 - accuracy: 0.1321
Epoch 3/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4705 - accuracy: 0.1700
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.3907 - accuracy: 0.1957
Epoch 5/100
48/48 [==============================] - 0s 10ms/step - loss: 2.2874 - accuracy: 0.2358
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1714 - accuracy: 0.2854
Epoch 7/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0675 - accuracy: 0.3198
Epoch 8/100
48/48 [==============================] - 1s 10ms/step - loss: 1.9155 - accuracy: 0.3720
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8316 - accuracy: 0.4041
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7075 - accuracy: 0.4433
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6242 - accuracy: 0.4777
Epoch 12/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5540 - accuracy: 0.4983
Epoch 13/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4440 - accuracy: 0.5395
Epoch 14/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3343 - accuracy: 0.5715
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2655 - accuracy: 0.6033
Epoch 16/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2145 - accuracy: 0.6159
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1281 - accuracy: 0.6388
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0641 - accuracy: 0.6646
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9947 - accuracy: 0.6906
Epoch 20/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9399 - accuracy: 0.7029
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8941 - accuracy: 0.7109
Epoch 22/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8506 - accuracy: 0.7302
Epoch 23/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8001 - accuracy: 0.7480
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7400 - accuracy: 0.7614
Epoch 25/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7068 - accuracy: 0.7762
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7034 - accuracy: 0.7824
Epoch 27/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6059 - accuracy: 0.8045
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6298 - accuracy: 0.8074
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5604 - accuracy: 0.8222
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5324 - accuracy: 0.8304
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5046 - accuracy: 0.8437
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5051 - accuracy: 0.8423
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4622 - accuracy: 0.8521
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4408 - accuracy: 0.8591
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4187 - accuracy: 0.8686
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3945 - accuracy: 0.8754
Epoch 37/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3651 - accuracy: 0.8830
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3909 - accuracy: 0.8802
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3411 - accuracy: 0.8925
Epoch 40/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3406 - accuracy: 0.8932
Epoch 41/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3314 - accuracy: 0.8947
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3297 - accuracy: 0.8927
Epoch 43/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2828 - accuracy: 0.9111
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3020 - accuracy: 0.9046
Epoch 45/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2855 - accuracy: 0.9121
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2746 - accuracy: 0.9126
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2745 - accuracy: 0.9168
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2476 - accuracy: 0.9229
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2345 - accuracy: 0.9289
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2556 - accuracy: 0.9241
Epoch 51/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2077 - accuracy: 0.9319
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2398 - accuracy: 0.9259
Epoch 53/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2146 - accuracy: 0.9299
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2048 - accuracy: 0.9345
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2217 - accuracy: 0.9317
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1973 - accuracy: 0.9390
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1867 - accuracy: 0.9372
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2038 - accuracy: 0.9355
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1877 - accuracy: 0.9400
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1959 - accuracy: 0.9365
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1737 - accuracy: 0.9493
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1870 - accuracy: 0.9420
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1706 - accuracy: 0.9475
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1706 - accuracy: 0.9473
Epoch 65/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1750 - accuracy: 0.9460
Epoch 66/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1618 - accuracy: 0.9487
Epoch 67/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1510 - accuracy: 0.9533
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1620 - accuracy: 0.9495
Epoch 69/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1545 - accuracy: 0.9548
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1702 - accuracy: 0.9528
Epoch 71/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1672 - accuracy: 0.9515
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1573 - accuracy: 0.9523
Epoch 73/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1492 - accuracy: 0.9573
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1604 - accuracy: 0.9545
Epoch 75/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1380 - accuracy: 0.9588
Epoch 76/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1331 - accuracy: 0.9616
Epoch 77/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1309 - accuracy: 0.9616
Epoch 78/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1505 - accuracy: 0.9565
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1288 - accuracy: 0.9603
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1398 - accuracy: 0.9590
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1561 - accuracy: 0.9543
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1417 - accuracy: 0.9625
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1260 - accuracy: 0.9631
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1439 - accuracy: 0.9611
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1635 - accuracy: 0.9538
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1177 - accuracy: 0.9654
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1274 - accuracy: 0.9626
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1337 - accuracy: 0.9644
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1392 - accuracy: 0.9590
Epoch 90/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1293 - accuracy: 0.9654
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1203 - accuracy: 0.9661
Epoch 92/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1297 - accuracy: 0.9616
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1267 - accuracy: 0.9603
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1143 - accuracy: 0.9641
Epoch 95/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1116 - accuracy: 0.9694
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1411 - accuracy: 0.9613
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1242 - accuracy: 0.9630
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.0994 - accuracy: 0.9704
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1184 - accuracy: 0.9668
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1163 - accuracy: 0.9683
24/24 [==============================] - 0s 4ms/step - loss: 0.5292 - accuracy: 0.8840
Epoch 1/100
48/48 [==============================] - 2s 11ms/step - loss: 2.6368 - accuracy: 0.0955
Epoch 2/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5846 - accuracy: 0.1191
Epoch 3/100
48/48 [==============================] - 1s 12ms/step - loss: 2.4794 - accuracy: 0.1481
Epoch 4/100
48/48 [==============================] - 1s 12ms/step - loss: 2.3556 - accuracy: 0.2082
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.2187 - accuracy: 0.2665
Epoch 6/100
48/48 [==============================] - 1s 11ms/step - loss: 2.0455 - accuracy: 0.3318
Epoch 7/100
48/48 [==============================] - 1s 12ms/step - loss: 1.9418 - accuracy: 0.3787
Epoch 8/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7993 - accuracy: 0.4129
Epoch 9/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6842 - accuracy: 0.4553
Epoch 10/100
48/48 [==============================] - 1s 12ms/step - loss: 1.5651 - accuracy: 0.4963
Epoch 11/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4087 - accuracy: 0.5503
Epoch 12/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3067 - accuracy: 0.5842
Epoch 13/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4528 - accuracy: 0.5613
Epoch 14/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1846 - accuracy: 0.6223
Epoch 15/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1899 - accuracy: 0.6356
Epoch 16/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9971 - accuracy: 0.6805
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0569 - accuracy: 0.6763
Epoch 18/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8889 - accuracy: 0.7183
Epoch 19/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3089 - accuracy: 0.6246
Epoch 20/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8470 - accuracy: 0.7326
Epoch 21/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7498 - accuracy: 0.7627
Epoch 22/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7790 - accuracy: 0.7627
Epoch 23/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6361 - accuracy: 0.7948
Epoch 24/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5699 - accuracy: 0.8172
Epoch 25/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5763 - accuracy: 0.8164
Epoch 26/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6750 - accuracy: 0.7883
Epoch 27/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5770 - accuracy: 0.8222
Epoch 28/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4459 - accuracy: 0.8591
Epoch 29/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4191 - accuracy: 0.8661
Epoch 30/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1448 - accuracy: 0.6941
Epoch 31/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4719 - accuracy: 0.8531
Epoch 32/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5696 - accuracy: 0.8272
Epoch 33/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4086 - accuracy: 0.8712
Epoch 34/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3711 - accuracy: 0.8794
Epoch 35/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3323 - accuracy: 0.8895
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3830 - accuracy: 0.8785
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2958 - accuracy: 0.9081
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2844 - accuracy: 0.9063
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3221 - accuracy: 0.9010
Epoch 40/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2523 - accuracy: 0.9199
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3511 - accuracy: 0.8912
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2599 - accuracy: 0.9176
Epoch 43/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2453 - accuracy: 0.9191
Epoch 44/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2613 - accuracy: 0.9141
Epoch 45/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2225 - accuracy: 0.9290
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2153 - accuracy: 0.9297
Epoch 47/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1872 - accuracy: 0.9377
Epoch 48/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1955 - accuracy: 0.9398
Epoch 49/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1927 - accuracy: 0.9400
Epoch 50/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1896 - accuracy: 0.9422
Epoch 51/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1780 - accuracy: 0.9455
Epoch 52/100
48/48 [==============================] - 1s 13ms/step - loss: 0.1560 - accuracy: 0.9508
Epoch 53/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5904 - accuracy: 0.8518
Epoch 54/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2873 - accuracy: 0.9103
Epoch 55/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2166 - accuracy: 0.9347
Epoch 56/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1967 - accuracy: 0.9384
Epoch 57/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3624 - accuracy: 0.9031
Epoch 58/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2068 - accuracy: 0.9329
Epoch 59/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3005 - accuracy: 0.9158
Epoch 60/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2004 - accuracy: 0.9402
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1922 - accuracy: 0.9395
Epoch 62/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1440 - accuracy: 0.9555
Epoch 63/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1405 - accuracy: 0.9541
Epoch 64/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1224 - accuracy: 0.9614
Epoch 65/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1628 - accuracy: 0.9503
Epoch 66/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1432 - accuracy: 0.9540
Epoch 67/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1132 - accuracy: 0.9653
Epoch 68/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1194 - accuracy: 0.9623
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1057 - accuracy: 0.9659
Epoch 70/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1172 - accuracy: 0.9621
Epoch 71/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1085 - accuracy: 0.9656
Epoch 72/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1073 - accuracy: 0.9639
Epoch 73/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1049 - accuracy: 0.9668
Epoch 74/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0954 - accuracy: 0.9676
Epoch 75/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1008 - accuracy: 0.9681
Epoch 76/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1033 - accuracy: 0.9681
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0936 - accuracy: 0.9714
Epoch 78/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0895 - accuracy: 0.9719
Epoch 79/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0783 - accuracy: 0.9746
Epoch 80/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1554 - accuracy: 0.9560
Epoch 81/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1044 - accuracy: 0.9669
Epoch 82/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0987 - accuracy: 0.9693
Epoch 83/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0955 - accuracy: 0.9736
Epoch 84/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0934 - accuracy: 0.9706
Epoch 85/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0916 - accuracy: 0.9734
Epoch 86/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1059 - accuracy: 0.9674
Epoch 87/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0952 - accuracy: 0.9703
Epoch 88/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1574 - accuracy: 0.9556
Epoch 89/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2984 - accuracy: 0.9246
Epoch 90/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1052 - accuracy: 0.9668
Epoch 91/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0893 - accuracy: 0.9734
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0966 - accuracy: 0.9708
Epoch 93/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0858 - accuracy: 0.9732
Epoch 94/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0735 - accuracy: 0.9749
Epoch 95/100
48/48 [==============================] - 1s 12ms/step - loss: 0.0652 - accuracy: 0.9771
Epoch 96/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0832 - accuracy: 0.9714
Epoch 97/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4259 - accuracy: 0.8910
Epoch 98/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1523 - accuracy: 0.9535
Epoch 99/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1183 - accuracy: 0.9619
Epoch 100/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1288 - accuracy: 0.9613
24/24 [==============================] - 0s 4ms/step - loss: 0.3640 - accuracy: 0.9010
Epoch 1/100
48/48 [==============================] - 2s 11ms/step - loss: 2.6510 - accuracy: 0.0950
Epoch 2/100
48/48 [==============================] - 1s 11ms/step - loss: 2.6073 - accuracy: 0.1125
Epoch 3/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5749 - accuracy: 0.1249
Epoch 4/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5274 - accuracy: 0.1618
Epoch 5/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5588 - accuracy: 0.1763
Epoch 6/100
48/48 [==============================] - 1s 11ms/step - loss: 2.4583 - accuracy: 0.2110
Epoch 7/100
48/48 [==============================] - 1s 11ms/step - loss: 2.3092 - accuracy: 0.2527
Epoch 8/100
48/48 [==============================] - 1s 12ms/step - loss: 2.1870 - accuracy: 0.2846
Epoch 9/100
48/48 [==============================] - 1s 11ms/step - loss: 2.0346 - accuracy: 0.3416
Epoch 10/100
48/48 [==============================] - 1s 12ms/step - loss: 1.9332 - accuracy: 0.3702
Epoch 11/100
48/48 [==============================] - 1s 13ms/step - loss: 1.8705 - accuracy: 0.3911
Epoch 12/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7207 - accuracy: 0.4360
Epoch 13/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6628 - accuracy: 0.4637
Epoch 14/100
48/48 [==============================] - 1s 12ms/step - loss: 1.5817 - accuracy: 0.4959
Epoch 15/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4526 - accuracy: 0.5366
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4074 - accuracy: 0.5577
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.3087 - accuracy: 0.5843
Epoch 18/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2579 - accuracy: 0.6129
Epoch 19/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2402 - accuracy: 0.6152
Epoch 20/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1307 - accuracy: 0.6468
Epoch 21/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0960 - accuracy: 0.6596
Epoch 22/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0743 - accuracy: 0.6697
Epoch 23/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0586 - accuracy: 0.6654
Epoch 24/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9299 - accuracy: 0.7101
Epoch 25/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8155 - accuracy: 0.7408
Epoch 26/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7727 - accuracy: 0.7534
Epoch 27/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7562 - accuracy: 0.7543
Epoch 28/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8122 - accuracy: 0.7510
Epoch 29/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1008 - accuracy: 0.6853
Epoch 30/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7152 - accuracy: 0.7689
Epoch 31/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7977 - accuracy: 0.7546
Epoch 32/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6451 - accuracy: 0.7965
Epoch 33/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5818 - accuracy: 0.8194
Epoch 34/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5548 - accuracy: 0.8212
Epoch 35/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5351 - accuracy: 0.8310
Epoch 36/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5200 - accuracy: 0.8355
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5123 - accuracy: 0.8344
Epoch 38/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6537 - accuracy: 0.7991
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5233 - accuracy: 0.8355
Epoch 40/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5969 - accuracy: 0.8191
Epoch 41/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5247 - accuracy: 0.8398
Epoch 42/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4014 - accuracy: 0.8737
Epoch 43/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3728 - accuracy: 0.8834
Epoch 44/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3842 - accuracy: 0.8759
Epoch 45/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5528 - accuracy: 0.8368
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3778 - accuracy: 0.8797
Epoch 47/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4187 - accuracy: 0.8712
Epoch 48/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4126 - accuracy: 0.8681
Epoch 49/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3267 - accuracy: 0.8937
Epoch 50/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3157 - accuracy: 0.8980
Epoch 51/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3318 - accuracy: 0.8918
Epoch 52/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2860 - accuracy: 0.9078
Epoch 53/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2639 - accuracy: 0.9114
Epoch 54/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2769 - accuracy: 0.9091
Epoch 55/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2783 - accuracy: 0.9080
Epoch 56/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2474 - accuracy: 0.9188
Epoch 57/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2383 - accuracy: 0.9264
Epoch 58/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2550 - accuracy: 0.9219
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2426 - accuracy: 0.9204
Epoch 60/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3582 - accuracy: 0.8978
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2707 - accuracy: 0.9123
Epoch 62/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2139 - accuracy: 0.9281
Epoch 63/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2040 - accuracy: 0.9330
Epoch 64/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2189 - accuracy: 0.9332
Epoch 65/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2114 - accuracy: 0.9329
Epoch 66/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1912 - accuracy: 0.9374
Epoch 67/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1826 - accuracy: 0.9389
Epoch 68/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7228 - accuracy: 0.8314
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2674 - accuracy: 0.9158
Epoch 70/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2579 - accuracy: 0.9169
Epoch 71/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2422 - accuracy: 0.9206
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1956 - accuracy: 0.9339
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1719 - accuracy: 0.9407
Epoch 74/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1781 - accuracy: 0.9452
Epoch 75/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1929 - accuracy: 0.9370
Epoch 76/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1787 - accuracy: 0.9399
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1746 - accuracy: 0.9463
Epoch 78/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1527 - accuracy: 0.9530
Epoch 79/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1654 - accuracy: 0.9468
Epoch 80/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5077 - accuracy: 0.8756
Epoch 81/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1990 - accuracy: 0.9394
Epoch 82/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1987 - accuracy: 0.9369
Epoch 83/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1726 - accuracy: 0.9445
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1698 - accuracy: 0.9472
Epoch 85/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1420 - accuracy: 0.9551
Epoch 86/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1441 - accuracy: 0.9528
Epoch 87/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1410 - accuracy: 0.9578
Epoch 88/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1607 - accuracy: 0.9467
Epoch 89/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1700 - accuracy: 0.9473
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1244 - accuracy: 0.9573
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1285 - accuracy: 0.9580
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1221 - accuracy: 0.9630
Epoch 93/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1366 - accuracy: 0.9566
Epoch 94/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1274 - accuracy: 0.9593
Epoch 95/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1284 - accuracy: 0.9591
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3518 - accuracy: 0.9168
Epoch 97/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1396 - accuracy: 0.9548
Epoch 98/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1812 - accuracy: 0.9422
Epoch 99/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1260 - accuracy: 0.9606
Epoch 100/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1114 - accuracy: 0.9631
24/24 [==============================] - 0s 4ms/step - loss: 0.3379 - accuracy: 0.9116
Epoch 1/100
48/48 [==============================] - 2s 11ms/step - loss: 2.6434 - accuracy: 0.0985
Epoch 2/100
48/48 [==============================] - 1s 11ms/step - loss: 2.6111 - accuracy: 0.0967
Epoch 3/100
48/48 [==============================] - 1s 12ms/step - loss: 2.6061 - accuracy: 0.1244
Epoch 4/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5120 - accuracy: 0.1627
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.3985 - accuracy: 0.1999
Epoch 6/100
48/48 [==============================] - 1s 12ms/step - loss: 2.4308 - accuracy: 0.2097
Epoch 7/100
48/48 [==============================] - 1s 11ms/step - loss: 2.1694 - accuracy: 0.2833
Epoch 8/100
48/48 [==============================] - 1s 12ms/step - loss: 2.0462 - accuracy: 0.3276
Epoch 9/100
48/48 [==============================] - 1s 11ms/step - loss: 2.0023 - accuracy: 0.3353
Epoch 10/100
48/48 [==============================] - 1s 11ms/step - loss: 2.0480 - accuracy: 0.3496
Epoch 11/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7516 - accuracy: 0.4365
Epoch 12/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6805 - accuracy: 0.4576
Epoch 13/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6924 - accuracy: 0.4745
Epoch 14/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4299 - accuracy: 0.5483
Epoch 15/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3467 - accuracy: 0.5724
Epoch 16/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2430 - accuracy: 0.6054
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2364 - accuracy: 0.6041
Epoch 18/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2424 - accuracy: 0.6152
Epoch 19/100
48/48 [==============================] - 1s 11ms/step - loss: 1.6289 - accuracy: 0.5290
Epoch 20/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0523 - accuracy: 0.6642
Epoch 21/100
48/48 [==============================] - 1s 10ms/step - loss: 0.9600 - accuracy: 0.6946
Epoch 22/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9631 - accuracy: 0.6975
Epoch 23/100
48/48 [==============================] - 1s 11ms/step - loss: 1.0588 - accuracy: 0.6877
Epoch 24/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8042 - accuracy: 0.7443
Epoch 25/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7538 - accuracy: 0.7621
Epoch 26/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7997 - accuracy: 0.7576
Epoch 27/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6593 - accuracy: 0.7853
Epoch 28/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6264 - accuracy: 0.7995
Epoch 29/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5899 - accuracy: 0.8088
Epoch 30/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7404 - accuracy: 0.7696
Epoch 31/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5684 - accuracy: 0.8231
Epoch 32/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5177 - accuracy: 0.8383
Epoch 33/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4865 - accuracy: 0.8435
Epoch 34/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4457 - accuracy: 0.8563
Epoch 35/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4517 - accuracy: 0.8555
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4101 - accuracy: 0.8732
Epoch 37/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3965 - accuracy: 0.8726
Epoch 38/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8868 - accuracy: 0.7883
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5798 - accuracy: 0.8319
Epoch 40/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4689 - accuracy: 0.8540
Epoch 41/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3492 - accuracy: 0.8850
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4423 - accuracy: 0.8643
Epoch 43/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3633 - accuracy: 0.8822
Epoch 44/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3185 - accuracy: 0.8993
Epoch 45/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2902 - accuracy: 0.9060
Epoch 46/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2786 - accuracy: 0.9070
Epoch 47/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2957 - accuracy: 0.9073
Epoch 48/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4244 - accuracy: 0.8847
Epoch 49/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2626 - accuracy: 0.9141
Epoch 50/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3792 - accuracy: 0.8792
Epoch 51/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3177 - accuracy: 0.8982
Epoch 52/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2452 - accuracy: 0.9217
Epoch 53/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2295 - accuracy: 0.9212
Epoch 54/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2173 - accuracy: 0.9317
Epoch 55/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2173 - accuracy: 0.9299
Epoch 56/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1864 - accuracy: 0.9379
Epoch 57/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1962 - accuracy: 0.9350
Epoch 58/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1932 - accuracy: 0.9387
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1790 - accuracy: 0.9407
Epoch 60/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1681 - accuracy: 0.9452
Epoch 61/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1703 - accuracy: 0.9455
Epoch 62/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1713 - accuracy: 0.9448
Epoch 63/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1574 - accuracy: 0.9487
Epoch 64/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1691 - accuracy: 0.9447
Epoch 65/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1783 - accuracy: 0.9462
Epoch 66/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1720 - accuracy: 0.9463
Epoch 67/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1576 - accuracy: 0.9492
Epoch 68/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2334 - accuracy: 0.9317
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1551 - accuracy: 0.9483
Epoch 70/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1605 - accuracy: 0.9498
Epoch 71/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1440 - accuracy: 0.9536
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1389 - accuracy: 0.9541
Epoch 73/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1357 - accuracy: 0.9555
Epoch 74/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1417 - accuracy: 0.9538
Epoch 75/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1262 - accuracy: 0.9596
Epoch 76/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1651 - accuracy: 0.9488
Epoch 77/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1305 - accuracy: 0.9595
Epoch 78/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2631 - accuracy: 0.7206
Epoch 79/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3147 - accuracy: 0.9045
Epoch 80/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2207 - accuracy: 0.9297
Epoch 81/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2394 - accuracy: 0.9262
Epoch 82/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1991 - accuracy: 0.9399
Epoch 83/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1580 - accuracy: 0.9500
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1476 - accuracy: 0.9540
Epoch 85/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1306 - accuracy: 0.9590
Epoch 86/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1253 - accuracy: 0.9601
Epoch 87/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1525 - accuracy: 0.9545
Epoch 88/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1324 - accuracy: 0.9581
Epoch 89/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1167 - accuracy: 0.9613
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1156 - accuracy: 0.9623
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1187 - accuracy: 0.9603
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2673 - accuracy: 0.9317
Epoch 93/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1137 - accuracy: 0.9633
Epoch 94/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1135 - accuracy: 0.9656
Epoch 95/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0970 - accuracy: 0.9718
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1037 - accuracy: 0.9668
Epoch 97/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1035 - accuracy: 0.9698
Epoch 98/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1054 - accuracy: 0.9678
Epoch 99/100
48/48 [==============================] - 1s 11ms/step - loss: 0.0951 - accuracy: 0.9701
Epoch 100/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1013 - accuracy: 0.9703
24/24 [==============================] - 0s 4ms/step - loss: 0.5318 - accuracy: 0.8661
Epoch 1/100
48/48 [==============================] - 1s 9ms/step - loss: 2.6422 - accuracy: 0.0942
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5748 - accuracy: 0.1035
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4991 - accuracy: 0.1238
Epoch 4/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4641 - accuracy: 0.1419
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4449 - accuracy: 0.1529
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.3230 - accuracy: 0.1946
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2813 - accuracy: 0.2399
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 2.0744 - accuracy: 0.3172
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 1.9833 - accuracy: 0.3460
Epoch 10/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8384 - accuracy: 0.3976
Epoch 11/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8462 - accuracy: 0.3875
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6766 - accuracy: 0.4513
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6330 - accuracy: 0.4674
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5407 - accuracy: 0.4897
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4347 - accuracy: 0.5362
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3654 - accuracy: 0.5492
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3013 - accuracy: 0.5798
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2037 - accuracy: 0.6082
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4367 - accuracy: 0.5392
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2684 - accuracy: 0.5969
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0984 - accuracy: 0.6373
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0255 - accuracy: 0.6687
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9840 - accuracy: 0.6786
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9293 - accuracy: 0.6954
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9458 - accuracy: 0.6873
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8733 - accuracy: 0.7132
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8278 - accuracy: 0.7376
Epoch 28/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8252 - accuracy: 0.7275
Epoch 29/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0161 - accuracy: 0.6781
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7713 - accuracy: 0.7496
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7700 - accuracy: 0.7511
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6966 - accuracy: 0.7695
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6670 - accuracy: 0.7835
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6636 - accuracy: 0.7878
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7561 - accuracy: 0.7557
Epoch 36/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6375 - accuracy: 0.7973
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7640 - accuracy: 0.7576
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5841 - accuracy: 0.8084
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5583 - accuracy: 0.8182
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5217 - accuracy: 0.8270
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6583 - accuracy: 0.7820
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5191 - accuracy: 0.8275
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4701 - accuracy: 0.8463
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4724 - accuracy: 0.8488
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5759 - accuracy: 0.8136
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4667 - accuracy: 0.8506
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4715 - accuracy: 0.8465
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4787 - accuracy: 0.8465
Epoch 49/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4245 - accuracy: 0.8616
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4079 - accuracy: 0.8682
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3970 - accuracy: 0.8682
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4669 - accuracy: 0.8491
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3941 - accuracy: 0.8719
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3663 - accuracy: 0.8835
Epoch 55/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3563 - accuracy: 0.8819
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6808 - accuracy: 0.7855
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4439 - accuracy: 0.8536
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4508 - accuracy: 0.8513
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3986 - accuracy: 0.8667
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3867 - accuracy: 0.8724
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4036 - accuracy: 0.8706
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3569 - accuracy: 0.8860
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3230 - accuracy: 0.8951
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6479 - accuracy: 0.8057
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3666 - accuracy: 0.8852
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6244 - accuracy: 0.8112
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3976 - accuracy: 0.8714
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3432 - accuracy: 0.8858
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3180 - accuracy: 0.8971
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3533 - accuracy: 0.8845
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5422 - accuracy: 0.8353
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3585 - accuracy: 0.8870
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3984 - accuracy: 0.8706
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3046 - accuracy: 0.8971
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3194 - accuracy: 0.8986
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3456 - accuracy: 0.8840
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2754 - accuracy: 0.9101
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2545 - accuracy: 0.9181
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2719 - accuracy: 0.9103
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2577 - accuracy: 0.9163
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2509 - accuracy: 0.9171
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2690 - accuracy: 0.9111
Epoch 83/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2381 - accuracy: 0.9227
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3131 - accuracy: 0.9061
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2473 - accuracy: 0.9202
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3509 - accuracy: 0.8875
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2489 - accuracy: 0.9226
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2287 - accuracy: 0.9266
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2249 - accuracy: 0.9322
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2525 - accuracy: 0.9164
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2166 - accuracy: 0.9289
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2583 - accuracy: 0.9124
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2833 - accuracy: 0.9084
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2756 - accuracy: 0.9091
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2105 - accuracy: 0.9339
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1968 - accuracy: 0.9370
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2023 - accuracy: 0.9344
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1880 - accuracy: 0.9393
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2031 - accuracy: 0.9327
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1937 - accuracy: 0.9354
24/24 [==============================] - 0s 4ms/step - loss: 0.3245 - accuracy: 0.9086
Epoch 1/100
48/48 [==============================] - 1s 9ms/step - loss: 2.6378 - accuracy: 0.0960
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5536 - accuracy: 0.1106
Epoch 3/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5224 - accuracy: 0.1211
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4334 - accuracy: 0.1530
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.3476 - accuracy: 0.1746
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.4556 - accuracy: 0.1582
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2518 - accuracy: 0.2220
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1400 - accuracy: 0.2756
Epoch 9/100
48/48 [==============================] - 0s 9ms/step - loss: 2.0303 - accuracy: 0.3228
Epoch 10/100
48/48 [==============================] - 0s 9ms/step - loss: 1.9618 - accuracy: 0.3439
Epoch 11/100
48/48 [==============================] - 0s 9ms/step - loss: 1.8377 - accuracy: 0.3878
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.7051 - accuracy: 0.4358
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5511 - accuracy: 0.4863
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5390 - accuracy: 0.4961
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4584 - accuracy: 0.5280
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3303 - accuracy: 0.5596
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.2601 - accuracy: 0.5890
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1958 - accuracy: 0.6117
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1552 - accuracy: 0.6232
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1126 - accuracy: 0.6430
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0680 - accuracy: 0.6539
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9678 - accuracy: 0.6908
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9079 - accuracy: 0.7046
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0134 - accuracy: 0.6717
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9040 - accuracy: 0.7046
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8321 - accuracy: 0.7348
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7665 - accuracy: 0.7515
Epoch 28/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7788 - accuracy: 0.7488
Epoch 29/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7242 - accuracy: 0.7679
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7917 - accuracy: 0.7430
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7086 - accuracy: 0.7677
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6674 - accuracy: 0.7855
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7909 - accuracy: 0.7475
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6145 - accuracy: 0.7998
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6024 - accuracy: 0.8041
Epoch 36/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6356 - accuracy: 0.7985
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7287 - accuracy: 0.7727
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5656 - accuracy: 0.8161
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5249 - accuracy: 0.8335
Epoch 40/100
48/48 [==============================] - 0s 8ms/step - loss: 0.5024 - accuracy: 0.8378
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5482 - accuracy: 0.8237
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6515 - accuracy: 0.7942
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5165 - accuracy: 0.8365
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5543 - accuracy: 0.8214
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4439 - accuracy: 0.8561
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4427 - accuracy: 0.8525
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4604 - accuracy: 0.8500
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4119 - accuracy: 0.8673
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4822 - accuracy: 0.8501
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4260 - accuracy: 0.8604
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4724 - accuracy: 0.8545
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3830 - accuracy: 0.8729
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3650 - accuracy: 0.8837
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3344 - accuracy: 0.8923
Epoch 55/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4152 - accuracy: 0.8654
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3823 - accuracy: 0.8759
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3467 - accuracy: 0.8880
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4456 - accuracy: 0.8593
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3372 - accuracy: 0.8962
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3304 - accuracy: 0.8935
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3185 - accuracy: 0.8990
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3050 - accuracy: 0.8973
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3686 - accuracy: 0.8829
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2857 - accuracy: 0.9058
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2835 - accuracy: 0.9088
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3015 - accuracy: 0.9033
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3048 - accuracy: 0.9030
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2699 - accuracy: 0.9105
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2661 - accuracy: 0.9119
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2549 - accuracy: 0.9118
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3172 - accuracy: 0.8995
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2789 - accuracy: 0.9108
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2537 - accuracy: 0.9222
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2442 - accuracy: 0.9206
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2420 - accuracy: 0.9226
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2437 - accuracy: 0.9179
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2738 - accuracy: 0.9128
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2790 - accuracy: 0.9111
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2235 - accuracy: 0.9237
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2335 - accuracy: 0.9179
Epoch 81/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2326 - accuracy: 0.9214
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2789 - accuracy: 0.9116
Epoch 83/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2366 - accuracy: 0.9239
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2416 - accuracy: 0.9226
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2652 - accuracy: 0.9176
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2344 - accuracy: 0.9239
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2178 - accuracy: 0.9322
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2081 - accuracy: 0.9316
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2451 - accuracy: 0.9217
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2763 - accuracy: 0.9148
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3458 - accuracy: 0.8927
Epoch 92/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2274 - accuracy: 0.9279
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1987 - accuracy: 0.9377
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2081 - accuracy: 0.9289
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2080 - accuracy: 0.9320
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2271 - accuracy: 0.9264
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2238 - accuracy: 0.9271
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2568 - accuracy: 0.9226
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2184 - accuracy: 0.9329
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2619 - accuracy: 0.9173
24/24 [==============================] - 0s 5ms/step - loss: 0.2595 - accuracy: 0.9242
Epoch 1/100
48/48 [==============================] - 1s 9ms/step - loss: 2.6372 - accuracy: 0.0872
Epoch 2/100
48/48 [==============================] - 0s 9ms/step - loss: 2.5445 - accuracy: 0.1007
Epoch 3/100
48/48 [==============================] - 1s 10ms/step - loss: 2.5290 - accuracy: 0.1211
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4342 - accuracy: 0.1435
Epoch 5/100
48/48 [==============================] - 0s 9ms/step - loss: 2.3560 - accuracy: 0.1738
Epoch 6/100
48/48 [==============================] - 0s 9ms/step - loss: 2.2476 - accuracy: 0.2190
Epoch 7/100
48/48 [==============================] - 0s 9ms/step - loss: 2.1577 - accuracy: 0.2647
Epoch 8/100
48/48 [==============================] - 0s 9ms/step - loss: 2.0120 - accuracy: 0.3228
Epoch 9/100
48/48 [==============================] - 0s 8ms/step - loss: 1.8770 - accuracy: 0.3818
Epoch 10/100
48/48 [==============================] - 0s 9ms/step - loss: 1.7945 - accuracy: 0.3999
Epoch 11/100
48/48 [==============================] - 0s 8ms/step - loss: 1.6448 - accuracy: 0.4567
Epoch 12/100
48/48 [==============================] - 0s 9ms/step - loss: 1.6152 - accuracy: 0.4730
Epoch 13/100
48/48 [==============================] - 0s 8ms/step - loss: 1.4550 - accuracy: 0.5125
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4266 - accuracy: 0.5262
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3182 - accuracy: 0.5594
Epoch 16/100
48/48 [==============================] - 0s 8ms/step - loss: 1.2837 - accuracy: 0.5863
Epoch 17/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1676 - accuracy: 0.6229
Epoch 18/100
48/48 [==============================] - 0s 9ms/step - loss: 1.1341 - accuracy: 0.6265
Epoch 19/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0614 - accuracy: 0.6553
Epoch 20/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0213 - accuracy: 0.6700
Epoch 21/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9993 - accuracy: 0.6730
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9084 - accuracy: 0.7021
Epoch 23/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9014 - accuracy: 0.7073
Epoch 24/100
48/48 [==============================] - 0s 9ms/step - loss: 0.9587 - accuracy: 0.6882
Epoch 25/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8317 - accuracy: 0.7254
Epoch 26/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7937 - accuracy: 0.7365
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7916 - accuracy: 0.7435
Epoch 28/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8417 - accuracy: 0.7262
Epoch 29/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7744 - accuracy: 0.7488
Epoch 30/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8614 - accuracy: 0.7279
Epoch 31/100
48/48 [==============================] - 0s 9ms/step - loss: 0.7027 - accuracy: 0.7721
Epoch 32/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6619 - accuracy: 0.7830
Epoch 33/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6747 - accuracy: 0.7807
Epoch 34/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5973 - accuracy: 0.8074
Epoch 35/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6230 - accuracy: 0.7955
Epoch 36/100
48/48 [==============================] - 0s 9ms/step - loss: 0.6197 - accuracy: 0.8015
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5775 - accuracy: 0.8113
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5960 - accuracy: 0.8088
Epoch 39/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5953 - accuracy: 0.8048
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5333 - accuracy: 0.8217
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5081 - accuracy: 0.8347
Epoch 42/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4659 - accuracy: 0.8525
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5601 - accuracy: 0.8216
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4940 - accuracy: 0.8400
Epoch 45/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5049 - accuracy: 0.8364
Epoch 46/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4819 - accuracy: 0.8422
Epoch 47/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4439 - accuracy: 0.8570
Epoch 48/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4459 - accuracy: 0.8481
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4327 - accuracy: 0.8588
Epoch 50/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3992 - accuracy: 0.8709
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3934 - accuracy: 0.8727
Epoch 52/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4107 - accuracy: 0.8702
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4195 - accuracy: 0.8648
Epoch 54/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4188 - accuracy: 0.8621
Epoch 55/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3647 - accuracy: 0.8802
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3713 - accuracy: 0.8729
Epoch 57/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3577 - accuracy: 0.8847
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3562 - accuracy: 0.8852
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3482 - accuracy: 0.8879
Epoch 60/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3630 - accuracy: 0.8864
Epoch 61/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3521 - accuracy: 0.8898
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5327 - accuracy: 0.8337
Epoch 63/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3345 - accuracy: 0.8864
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3259 - accuracy: 0.8925
Epoch 65/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3739 - accuracy: 0.8769
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3008 - accuracy: 0.8988
Epoch 67/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2796 - accuracy: 0.9070
Epoch 68/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3096 - accuracy: 0.8975
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3977 - accuracy: 0.8761
Epoch 70/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2831 - accuracy: 0.9129
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2757 - accuracy: 0.9093
Epoch 72/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2729 - accuracy: 0.9103
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3222 - accuracy: 0.8960
Epoch 74/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2579 - accuracy: 0.9154
Epoch 75/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2598 - accuracy: 0.9181
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2458 - accuracy: 0.9191
Epoch 77/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2633 - accuracy: 0.9159
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2611 - accuracy: 0.9184
Epoch 79/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2337 - accuracy: 0.9271
Epoch 80/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2592 - accuracy: 0.9181
Epoch 81/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2468 - accuracy: 0.9251
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2537 - accuracy: 0.9168
Epoch 83/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2309 - accuracy: 0.9264
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2555 - accuracy: 0.9186
Epoch 85/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2495 - accuracy: 0.9196
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2266 - accuracy: 0.9249
Epoch 87/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2444 - accuracy: 0.9236
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3150 - accuracy: 0.8998
Epoch 89/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2144 - accuracy: 0.9317
Epoch 90/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2357 - accuracy: 0.9214
Epoch 91/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2191 - accuracy: 0.9301
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1971 - accuracy: 0.9354
Epoch 93/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2010 - accuracy: 0.9332
Epoch 94/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2087 - accuracy: 0.9317
Epoch 95/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3597 - accuracy: 0.8928
Epoch 96/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1946 - accuracy: 0.9422
Epoch 97/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3672 - accuracy: 0.8855
Epoch 98/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2460 - accuracy: 0.9229
Epoch 99/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2194 - accuracy: 0.9309
Epoch 100/100
48/48 [==============================] - 0s 9ms/step - loss: 0.1840 - accuracy: 0.9374
24/24 [==============================] - 0s 4ms/step - loss: 0.7443 - accuracy: 0.7979
Epoch 1/100
48/48 [==============================] - 2s 10ms/step - loss: 2.6664 - accuracy: 0.0907
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.6118 - accuracy: 0.1030
Epoch 3/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5370 - accuracy: 0.1331
Epoch 4/100
48/48 [==============================] - 1s 10ms/step - loss: 2.4631 - accuracy: 0.1702
Epoch 5/100
48/48 [==============================] - 0s 10ms/step - loss: 2.3184 - accuracy: 0.2296
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.2411 - accuracy: 0.2700
Epoch 7/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0975 - accuracy: 0.3179
Epoch 8/100
48/48 [==============================] - 1s 10ms/step - loss: 2.0005 - accuracy: 0.3566
Epoch 9/100
48/48 [==============================] - 1s 11ms/step - loss: 1.9163 - accuracy: 0.3792
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8545 - accuracy: 0.4015
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7363 - accuracy: 0.4427
Epoch 12/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6282 - accuracy: 0.4777
Epoch 13/100
48/48 [==============================] - 0s 10ms/step - loss: 1.5778 - accuracy: 0.4944
Epoch 14/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4990 - accuracy: 0.5163
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4066 - accuracy: 0.5390
Epoch 16/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3736 - accuracy: 0.5616
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3079 - accuracy: 0.5841
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2400 - accuracy: 0.5941
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1869 - accuracy: 0.6226
Epoch 20/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1505 - accuracy: 0.6294
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0639 - accuracy: 0.6582
Epoch 22/100
48/48 [==============================] - 0s 9ms/step - loss: 1.0286 - accuracy: 0.6717
Epoch 23/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9863 - accuracy: 0.6830
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9870 - accuracy: 0.6849
Epoch 25/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9325 - accuracy: 0.7047
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8661 - accuracy: 0.7207
Epoch 27/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8122 - accuracy: 0.7394
Epoch 28/100
48/48 [==============================] - 1s 10ms/step - loss: 0.8291 - accuracy: 0.7301
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7664 - accuracy: 0.7569
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7366 - accuracy: 0.7679
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7133 - accuracy: 0.7752
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6922 - accuracy: 0.7807
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6726 - accuracy: 0.7866
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6381 - accuracy: 0.7973
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5989 - accuracy: 0.8102
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6138 - accuracy: 0.8102
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5800 - accuracy: 0.8194
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5788 - accuracy: 0.8252
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5234 - accuracy: 0.8267
Epoch 40/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4957 - accuracy: 0.8476
Epoch 41/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5208 - accuracy: 0.8320
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5063 - accuracy: 0.8425
Epoch 43/100
48/48 [==============================] - 1s 10ms/step - loss: 0.4851 - accuracy: 0.8514
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4452 - accuracy: 0.8546
Epoch 45/100
48/48 [==============================] - 1s 10ms/step - loss: 0.4334 - accuracy: 0.8659
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4441 - accuracy: 0.8589
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4197 - accuracy: 0.8671
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4211 - accuracy: 0.8692
Epoch 49/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4233 - accuracy: 0.8697
Epoch 50/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3814 - accuracy: 0.8819
Epoch 51/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3895 - accuracy: 0.8789
Epoch 52/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3670 - accuracy: 0.8855
Epoch 53/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3531 - accuracy: 0.8898
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3784 - accuracy: 0.8852
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3537 - accuracy: 0.8902
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3434 - accuracy: 0.8927
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3241 - accuracy: 0.9010
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3297 - accuracy: 0.8996
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3110 - accuracy: 0.9043
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3440 - accuracy: 0.8930
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3180 - accuracy: 0.9025
Epoch 62/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3021 - accuracy: 0.9021
Epoch 63/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3024 - accuracy: 0.9101
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2883 - accuracy: 0.9133
Epoch 65/100
48/48 [==============================] - 1s 10ms/step - loss: 0.3098 - accuracy: 0.9046
Epoch 66/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4113 - accuracy: 0.9055
Epoch 67/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2965 - accuracy: 0.9114
Epoch 68/100
48/48 [==============================] - 1s 10ms/step - loss: 0.2773 - accuracy: 0.9136
Epoch 69/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2778 - accuracy: 0.9091
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2692 - accuracy: 0.9158
Epoch 71/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2635 - accuracy: 0.9217
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2675 - accuracy: 0.9148
Epoch 73/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2463 - accuracy: 0.9231
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2679 - accuracy: 0.9169
Epoch 75/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2352 - accuracy: 0.9249
Epoch 76/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2588 - accuracy: 0.9207
Epoch 77/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2749 - accuracy: 0.9212
Epoch 78/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2461 - accuracy: 0.9290
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2232 - accuracy: 0.9287
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2515 - accuracy: 0.9264
Epoch 81/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2589 - accuracy: 0.9256
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2210 - accuracy: 0.9322
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2137 - accuracy: 0.9347
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2441 - accuracy: 0.9299
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2386 - accuracy: 0.9297
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2138 - accuracy: 0.9330
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2188 - accuracy: 0.9319
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2111 - accuracy: 0.9330
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2307 - accuracy: 0.9315
Epoch 90/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2353 - accuracy: 0.9327
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1959 - accuracy: 0.9433
Epoch 92/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2135 - accuracy: 0.9393
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2365 - accuracy: 0.9337
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1989 - accuracy: 0.9415
Epoch 95/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2212 - accuracy: 0.9355
Epoch 96/100
48/48 [==============================] - 1s 14ms/step - loss: 0.2072 - accuracy: 0.9385
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2083 - accuracy: 0.9372
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1863 - accuracy: 0.9440
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1922 - accuracy: 0.9412
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1939 - accuracy: 0.9435
24/24 [==============================] - 0s 4ms/step - loss: 0.3688 - accuracy: 0.9027
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6475 - accuracy: 0.1047
Epoch 2/100
48/48 [==============================] - 0s 10ms/step - loss: 2.5726 - accuracy: 0.1341
Epoch 3/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5181 - accuracy: 0.1553
Epoch 4/100
48/48 [==============================] - 1s 11ms/step - loss: 2.4230 - accuracy: 0.1984
Epoch 5/100
48/48 [==============================] - 1s 11ms/step - loss: 2.3241 - accuracy: 0.2384
Epoch 6/100
48/48 [==============================] - 1s 11ms/step - loss: 2.2108 - accuracy: 0.2781
Epoch 7/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1085 - accuracy: 0.3187
Epoch 8/100
48/48 [==============================] - 0s 10ms/step - loss: 2.0093 - accuracy: 0.3564
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.9396 - accuracy: 0.3776
Epoch 10/100
48/48 [==============================] - 1s 11ms/step - loss: 1.8312 - accuracy: 0.4150
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7540 - accuracy: 0.4482
Epoch 12/100
48/48 [==============================] - 1s 11ms/step - loss: 1.6326 - accuracy: 0.4718
Epoch 13/100
48/48 [==============================] - 1s 10ms/step - loss: 1.5698 - accuracy: 0.5059
Epoch 14/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4839 - accuracy: 0.5222
Epoch 15/100
48/48 [==============================] - 0s 9ms/step - loss: 1.4347 - accuracy: 0.5400
Epoch 16/100
48/48 [==============================] - 0s 9ms/step - loss: 1.3088 - accuracy: 0.5818
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2979 - accuracy: 0.5893
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2185 - accuracy: 0.6175
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1892 - accuracy: 0.6229
Epoch 20/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1172 - accuracy: 0.6418
Epoch 21/100
48/48 [==============================] - 1s 10ms/step - loss: 1.0555 - accuracy: 0.6639
Epoch 22/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0387 - accuracy: 0.6767
Epoch 23/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9718 - accuracy: 0.6905
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9429 - accuracy: 0.7004
Epoch 25/100
48/48 [==============================] - 1s 11ms/step - loss: 0.9254 - accuracy: 0.7061
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8918 - accuracy: 0.7141
Epoch 27/100
48/48 [==============================] - 0s 9ms/step - loss: 0.8446 - accuracy: 0.7388
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8055 - accuracy: 0.7473
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7560 - accuracy: 0.7583
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7243 - accuracy: 0.7691
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7119 - accuracy: 0.7820
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6889 - accuracy: 0.7832
Epoch 33/100
48/48 [==============================] - 1s 10ms/step - loss: 0.6653 - accuracy: 0.7872
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6413 - accuracy: 0.7981
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5775 - accuracy: 0.8179
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6134 - accuracy: 0.8093
Epoch 37/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5901 - accuracy: 0.8143
Epoch 38/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5715 - accuracy: 0.8167
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5451 - accuracy: 0.8267
Epoch 40/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5198 - accuracy: 0.8349
Epoch 41/100
48/48 [==============================] - 0s 9ms/step - loss: 0.5179 - accuracy: 0.8349
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5006 - accuracy: 0.8408
Epoch 43/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4873 - accuracy: 0.8491
Epoch 44/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4527 - accuracy: 0.8568
Epoch 45/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4708 - accuracy: 0.8565
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4343 - accuracy: 0.8631
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4300 - accuracy: 0.8671
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4147 - accuracy: 0.8663
Epoch 49/100
48/48 [==============================] - 0s 9ms/step - loss: 0.4024 - accuracy: 0.8691
Epoch 50/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4091 - accuracy: 0.8731
Epoch 51/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3940 - accuracy: 0.8779
Epoch 52/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3959 - accuracy: 0.8769
Epoch 53/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3711 - accuracy: 0.8840
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3626 - accuracy: 0.8835
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3486 - accuracy: 0.8912
Epoch 56/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3540 - accuracy: 0.8923
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3400 - accuracy: 0.8879
Epoch 58/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3397 - accuracy: 0.8907
Epoch 59/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3314 - accuracy: 0.8950
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3307 - accuracy: 0.9010
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2955 - accuracy: 0.9021
Epoch 62/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3163 - accuracy: 0.9040
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3260 - accuracy: 0.9021
Epoch 64/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3124 - accuracy: 0.9050
Epoch 65/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2665 - accuracy: 0.9188
Epoch 66/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2827 - accuracy: 0.9144
Epoch 67/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3004 - accuracy: 0.9041
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2728 - accuracy: 0.9164
Epoch 69/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2756 - accuracy: 0.9173
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3258 - accuracy: 0.9031
Epoch 71/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2587 - accuracy: 0.9201
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2825 - accuracy: 0.9133
Epoch 73/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2732 - accuracy: 0.9131
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2535 - accuracy: 0.9181
Epoch 75/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2674 - accuracy: 0.9241
Epoch 76/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2574 - accuracy: 0.9203
Epoch 77/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2540 - accuracy: 0.9214
Epoch 78/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2398 - accuracy: 0.9239
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2494 - accuracy: 0.9249
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2569 - accuracy: 0.9221
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2100 - accuracy: 0.9317
Epoch 82/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2546 - accuracy: 0.9234
Epoch 83/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2176 - accuracy: 0.9314
Epoch 84/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2402 - accuracy: 0.9312
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2476 - accuracy: 0.9286
Epoch 86/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2364 - accuracy: 0.9277
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2281 - accuracy: 0.9316
Epoch 88/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2230 - accuracy: 0.9334
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2278 - accuracy: 0.9311
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2407 - accuracy: 0.9269
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2289 - accuracy: 0.9345
Epoch 92/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2290 - accuracy: 0.9364
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2097 - accuracy: 0.9420
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2333 - accuracy: 0.9332
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2066 - accuracy: 0.9422
Epoch 96/100
48/48 [==============================] - 1s 10ms/step - loss: 0.2218 - accuracy: 0.9322
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2083 - accuracy: 0.9375
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2282 - accuracy: 0.9319
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2140 - accuracy: 0.9349
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2269 - accuracy: 0.9335
24/24 [==============================] - 0s 4ms/step - loss: 0.3291 - accuracy: 0.9040
Epoch 1/100
48/48 [==============================] - 1s 10ms/step - loss: 2.6401 - accuracy: 0.0980
Epoch 2/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5551 - accuracy: 0.1314
Epoch 3/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4805 - accuracy: 0.1547
Epoch 4/100
48/48 [==============================] - 0s 10ms/step - loss: 2.4058 - accuracy: 0.1854
Epoch 5/100
48/48 [==============================] - 1s 10ms/step - loss: 2.2910 - accuracy: 0.2396
Epoch 6/100
48/48 [==============================] - 0s 10ms/step - loss: 2.1852 - accuracy: 0.2780
Epoch 7/100
48/48 [==============================] - 1s 10ms/step - loss: 2.0812 - accuracy: 0.3155
Epoch 8/100
48/48 [==============================] - 0s 10ms/step - loss: 1.9946 - accuracy: 0.3547
Epoch 9/100
48/48 [==============================] - 0s 10ms/step - loss: 1.9111 - accuracy: 0.3761
Epoch 10/100
48/48 [==============================] - 0s 10ms/step - loss: 1.8245 - accuracy: 0.4077
Epoch 11/100
48/48 [==============================] - 0s 10ms/step - loss: 1.7339 - accuracy: 0.4336
Epoch 12/100
48/48 [==============================] - 0s 10ms/step - loss: 1.6728 - accuracy: 0.4604
Epoch 13/100
48/48 [==============================] - 0s 9ms/step - loss: 1.5664 - accuracy: 0.4956
Epoch 14/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4804 - accuracy: 0.5275
Epoch 15/100
48/48 [==============================] - 0s 10ms/step - loss: 1.4583 - accuracy: 0.5418
Epoch 16/100
48/48 [==============================] - 0s 10ms/step - loss: 1.3573 - accuracy: 0.5695
Epoch 17/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2959 - accuracy: 0.5895
Epoch 18/100
48/48 [==============================] - 0s 10ms/step - loss: 1.2114 - accuracy: 0.6101
Epoch 19/100
48/48 [==============================] - 0s 10ms/step - loss: 1.1666 - accuracy: 0.6308
Epoch 20/100
48/48 [==============================] - 1s 10ms/step - loss: 1.1142 - accuracy: 0.6445
Epoch 21/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0548 - accuracy: 0.6664
Epoch 22/100
48/48 [==============================] - 0s 10ms/step - loss: 1.0259 - accuracy: 0.6757
Epoch 23/100
48/48 [==============================] - 1s 10ms/step - loss: 0.9804 - accuracy: 0.6892
Epoch 24/100
48/48 [==============================] - 0s 10ms/step - loss: 0.9057 - accuracy: 0.7131
Epoch 25/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8742 - accuracy: 0.7239
Epoch 26/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8500 - accuracy: 0.7255
Epoch 27/100
48/48 [==============================] - 0s 10ms/step - loss: 0.8150 - accuracy: 0.7363
Epoch 28/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7756 - accuracy: 0.7520
Epoch 29/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7594 - accuracy: 0.7634
Epoch 30/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7307 - accuracy: 0.7636
Epoch 31/100
48/48 [==============================] - 0s 10ms/step - loss: 0.7166 - accuracy: 0.7745
Epoch 32/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6812 - accuracy: 0.7880
Epoch 33/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6595 - accuracy: 0.7885
Epoch 34/100
48/48 [==============================] - 0s 10ms/step - loss: 0.6182 - accuracy: 0.8021
Epoch 35/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5908 - accuracy: 0.8108
Epoch 36/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5719 - accuracy: 0.8139
Epoch 37/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5729 - accuracy: 0.8153
Epoch 38/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5485 - accuracy: 0.8257
Epoch 39/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5214 - accuracy: 0.8403
Epoch 40/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5476 - accuracy: 0.8285
Epoch 41/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4882 - accuracy: 0.8513
Epoch 42/100
48/48 [==============================] - 0s 10ms/step - loss: 0.5056 - accuracy: 0.8433
Epoch 43/100
48/48 [==============================] - 1s 10ms/step - loss: 0.4784 - accuracy: 0.8442
Epoch 44/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4393 - accuracy: 0.8598
Epoch 45/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4493 - accuracy: 0.8575
Epoch 46/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4540 - accuracy: 0.8604
Epoch 47/100
48/48 [==============================] - 0s 10ms/step - loss: 0.4249 - accuracy: 0.8663
Epoch 48/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3980 - accuracy: 0.8727
Epoch 49/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3960 - accuracy: 0.8742
Epoch 50/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3944 - accuracy: 0.8787
Epoch 51/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3814 - accuracy: 0.8795
Epoch 52/100
48/48 [==============================] - 1s 10ms/step - loss: 0.3599 - accuracy: 0.8857
Epoch 53/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3729 - accuracy: 0.8812
Epoch 54/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3498 - accuracy: 0.8892
Epoch 55/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3256 - accuracy: 0.8918
Epoch 56/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3634 - accuracy: 0.8849
Epoch 57/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3212 - accuracy: 0.8983
Epoch 58/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3072 - accuracy: 0.9060
Epoch 59/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3130 - accuracy: 0.9026
Epoch 60/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3174 - accuracy: 0.9026
Epoch 61/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3196 - accuracy: 0.9006
Epoch 62/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2793 - accuracy: 0.9098
Epoch 63/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2770 - accuracy: 0.9134
Epoch 64/100
48/48 [==============================] - 0s 10ms/step - loss: 0.3047 - accuracy: 0.9036
Epoch 65/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2728 - accuracy: 0.9139
Epoch 66/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2799 - accuracy: 0.9129
Epoch 67/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2980 - accuracy: 0.9134
Epoch 68/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2806 - accuracy: 0.9151
Epoch 69/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2680 - accuracy: 0.9179
Epoch 70/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2970 - accuracy: 0.9178
Epoch 71/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2335 - accuracy: 0.9259
Epoch 72/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2546 - accuracy: 0.9188
Epoch 73/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2513 - accuracy: 0.9211
Epoch 74/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2687 - accuracy: 0.9199
Epoch 75/100
48/48 [==============================] - 0s 9ms/step - loss: 0.3000 - accuracy: 0.9196
Epoch 76/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2441 - accuracy: 0.9229
Epoch 77/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2448 - accuracy: 0.9211
Epoch 78/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2410 - accuracy: 0.9297
Epoch 79/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2389 - accuracy: 0.9252
Epoch 80/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2086 - accuracy: 0.9337
Epoch 81/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2396 - accuracy: 0.9259
Epoch 82/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2262 - accuracy: 0.9329
Epoch 83/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2115 - accuracy: 0.9345
Epoch 84/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2355 - accuracy: 0.9274
Epoch 85/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1942 - accuracy: 0.9392
Epoch 86/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2148 - accuracy: 0.9365
Epoch 87/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2133 - accuracy: 0.9395
Epoch 88/100
48/48 [==============================] - 0s 9ms/step - loss: 0.2181 - accuracy: 0.9345
Epoch 89/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2345 - accuracy: 0.9282
Epoch 90/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2372 - accuracy: 0.9302
Epoch 91/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2039 - accuracy: 0.9392
Epoch 92/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2023 - accuracy: 0.9389
Epoch 93/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2213 - accuracy: 0.9354
Epoch 94/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2122 - accuracy: 0.9402
Epoch 95/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2406 - accuracy: 0.9311
Epoch 96/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2037 - accuracy: 0.9417
Epoch 97/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1987 - accuracy: 0.9387
Epoch 98/100
48/48 [==============================] - 0s 10ms/step - loss: 0.2045 - accuracy: 0.9407
Epoch 99/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1832 - accuracy: 0.9472
Epoch 100/100
48/48 [==============================] - 0s 10ms/step - loss: 0.1919 - accuracy: 0.9437
24/24 [==============================] - 0s 4ms/step - loss: 0.2810 - accuracy: 0.9172
Epoch 1/100
48/48 [==============================] - 2s 12ms/step - loss: 2.6404 - accuracy: 0.0984
Epoch 2/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5833 - accuracy: 0.1108
Epoch 3/100
48/48 [==============================] - 1s 11ms/step - loss: 2.5219 - accuracy: 0.1301
Epoch 4/100
48/48 [==============================] - 1s 12ms/step - loss: 2.4261 - accuracy: 0.1856
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.3034 - accuracy: 0.2453
Epoch 6/100
48/48 [==============================] - 1s 12ms/step - loss: 2.2930 - accuracy: 0.2527
Epoch 7/100
48/48 [==============================] - 1s 12ms/step - loss: 2.0680 - accuracy: 0.3217
Epoch 8/100
48/48 [==============================] - 1s 11ms/step - loss: 2.0475 - accuracy: 0.3435
Epoch 9/100
48/48 [==============================] - 1s 12ms/step - loss: 1.8486 - accuracy: 0.3975
Epoch 10/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7760 - accuracy: 0.4299
Epoch 11/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7133 - accuracy: 0.4523
Epoch 12/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6040 - accuracy: 0.4842
Epoch 13/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4988 - accuracy: 0.5208
Epoch 14/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4120 - accuracy: 0.5467
Epoch 15/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7091 - accuracy: 0.4877
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.3149 - accuracy: 0.5799
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2323 - accuracy: 0.6024
Epoch 18/100
48/48 [==============================] - 1s 11ms/step - loss: 1.1846 - accuracy: 0.6160
Epoch 19/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2693 - accuracy: 0.6080
Epoch 20/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0462 - accuracy: 0.6633
Epoch 21/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0162 - accuracy: 0.6805
Epoch 22/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2364 - accuracy: 0.6157
Epoch 23/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9669 - accuracy: 0.6951
Epoch 24/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8784 - accuracy: 0.7175
Epoch 25/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8765 - accuracy: 0.7150
Epoch 26/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7983 - accuracy: 0.7403
Epoch 27/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8885 - accuracy: 0.7237
Epoch 28/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6407 - accuracy: 0.5851
Epoch 29/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8721 - accuracy: 0.7175
Epoch 30/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7926 - accuracy: 0.7491
Epoch 31/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7422 - accuracy: 0.7572
Epoch 32/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6811 - accuracy: 0.7795
Epoch 33/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8143 - accuracy: 0.7439
Epoch 34/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6625 - accuracy: 0.7940
Epoch 35/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6077 - accuracy: 0.8071
Epoch 36/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5862 - accuracy: 0.8134
Epoch 37/100
48/48 [==============================] - 1s 11ms/step - loss: 0.5751 - accuracy: 0.8127
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5542 - accuracy: 0.8195
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5681 - accuracy: 0.8154
Epoch 40/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5273 - accuracy: 0.8277
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5907 - accuracy: 0.8144
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4908 - accuracy: 0.8440
Epoch 43/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5357 - accuracy: 0.8257
Epoch 44/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4635 - accuracy: 0.8490
Epoch 45/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4689 - accuracy: 0.8491
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4517 - accuracy: 0.8523
Epoch 47/100
48/48 [==============================] - 1s 11ms/step - loss: 0.7383 - accuracy: 0.8034
Epoch 48/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4484 - accuracy: 0.8616
Epoch 49/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3999 - accuracy: 0.8767
Epoch 50/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4036 - accuracy: 0.8742
Epoch 51/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3839 - accuracy: 0.8742
Epoch 52/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3938 - accuracy: 0.8724
Epoch 53/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3641 - accuracy: 0.8782
Epoch 54/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6312 - accuracy: 0.8260
Epoch 55/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3920 - accuracy: 0.8762
Epoch 56/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3759 - accuracy: 0.8792
Epoch 57/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3558 - accuracy: 0.8820
Epoch 58/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3276 - accuracy: 0.8920
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3100 - accuracy: 0.9011
Epoch 60/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3211 - accuracy: 0.8958
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2963 - accuracy: 0.9026
Epoch 62/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3088 - accuracy: 0.8968
Epoch 63/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3495 - accuracy: 0.8878
Epoch 64/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6309 - accuracy: 0.8154
Epoch 65/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3717 - accuracy: 0.8835
Epoch 66/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3211 - accuracy: 0.8970
Epoch 67/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3088 - accuracy: 0.8978
Epoch 68/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2823 - accuracy: 0.9030
Epoch 69/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3659 - accuracy: 0.8858
Epoch 70/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2930 - accuracy: 0.9069
Epoch 71/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2735 - accuracy: 0.9104
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2679 - accuracy: 0.9108
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2530 - accuracy: 0.9196
Epoch 74/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2477 - accuracy: 0.9176
Epoch 75/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2793 - accuracy: 0.9121
Epoch 76/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2696 - accuracy: 0.7034
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4423 - accuracy: 0.8596
Epoch 78/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3823 - accuracy: 0.8767
Epoch 79/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3237 - accuracy: 0.8981
Epoch 80/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2781 - accuracy: 0.9144
Epoch 81/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2671 - accuracy: 0.9169
Epoch 82/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2562 - accuracy: 0.9126
Epoch 83/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2568 - accuracy: 0.9169
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2657 - accuracy: 0.9167
Epoch 85/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2239 - accuracy: 0.9274
Epoch 86/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2381 - accuracy: 0.9244
Epoch 87/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2764 - accuracy: 0.9113
Epoch 88/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2307 - accuracy: 0.9251
Epoch 89/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2023 - accuracy: 0.9342
Epoch 90/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1912 - accuracy: 0.9350
Epoch 91/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3293 - accuracy: 0.8970
Epoch 92/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3678 - accuracy: 0.8882
Epoch 93/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2235 - accuracy: 0.9290
Epoch 94/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2055 - accuracy: 0.9335
Epoch 95/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2115 - accuracy: 0.9344
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1939 - accuracy: 0.9380
Epoch 97/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2502 - accuracy: 0.9254
Epoch 98/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3010 - accuracy: 0.9020
Epoch 99/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2239 - accuracy: 0.9267
Epoch 100/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1830 - accuracy: 0.9438
24/24 [==============================] - 0s 4ms/step - loss: 2.1995 - accuracy: 0.5249
Epoch 1/100
48/48 [==============================] - 2s 13ms/step - loss: 2.6396 - accuracy: 0.0939
Epoch 2/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5870 - accuracy: 0.1205
Epoch 3/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5169 - accuracy: 0.1337
Epoch 4/100
48/48 [==============================] - 1s 12ms/step - loss: 2.4612 - accuracy: 0.1550
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.3688 - accuracy: 0.1906
Epoch 6/100
48/48 [==============================] - 1s 12ms/step - loss: 2.2349 - accuracy: 0.2600
Epoch 7/100
48/48 [==============================] - 1s 12ms/step - loss: 2.0621 - accuracy: 0.3175
Epoch 8/100
48/48 [==============================] - 1s 12ms/step - loss: 1.9411 - accuracy: 0.3692
Epoch 9/100
48/48 [==============================] - 1s 11ms/step - loss: 2.1356 - accuracy: 0.3461
Epoch 10/100
48/48 [==============================] - 1s 11ms/step - loss: 1.8153 - accuracy: 0.4217
Epoch 11/100
48/48 [==============================] - 1s 11ms/step - loss: 1.7188 - accuracy: 0.4492
Epoch 12/100
48/48 [==============================] - 1s 12ms/step - loss: 1.5729 - accuracy: 0.4959
Epoch 13/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4968 - accuracy: 0.5312
Epoch 14/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7925 - accuracy: 0.4767
Epoch 15/100
48/48 [==============================] - 1s 11ms/step - loss: 1.4559 - accuracy: 0.5491
Epoch 16/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2609 - accuracy: 0.5984
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1875 - accuracy: 0.6242
Epoch 18/100
48/48 [==============================] - 1s 12ms/step - loss: 1.3411 - accuracy: 0.5797
Epoch 19/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2277 - accuracy: 0.6275
Epoch 20/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0518 - accuracy: 0.6632
Epoch 21/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0292 - accuracy: 0.6729
Epoch 22/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9958 - accuracy: 0.6870
Epoch 23/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8925 - accuracy: 0.7164
Epoch 24/100
48/48 [==============================] - 1s 11ms/step - loss: 0.8492 - accuracy: 0.7257
Epoch 25/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8213 - accuracy: 0.7358
Epoch 26/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0688 - accuracy: 0.6943
Epoch 27/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7482 - accuracy: 0.7568
Epoch 28/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7169 - accuracy: 0.7697
Epoch 29/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9377 - accuracy: 0.7214
Epoch 30/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6718 - accuracy: 0.7852
Epoch 31/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6678 - accuracy: 0.7960
Epoch 32/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6245 - accuracy: 0.7995
Epoch 33/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6111 - accuracy: 0.8025
Epoch 34/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5730 - accuracy: 0.8116
Epoch 35/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7211 - accuracy: 0.6009
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8159 - accuracy: 0.7490
Epoch 37/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7357 - accuracy: 0.7749
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6684 - accuracy: 0.7878
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6404 - accuracy: 0.7991
Epoch 40/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5625 - accuracy: 0.8207
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5608 - accuracy: 0.8222
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6261 - accuracy: 0.8103
Epoch 43/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5012 - accuracy: 0.8420
Epoch 44/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5074 - accuracy: 0.8402
Epoch 45/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4659 - accuracy: 0.8490
Epoch 46/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4303 - accuracy: 0.8594
Epoch 47/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6556 - accuracy: 0.8101
Epoch 48/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4206 - accuracy: 0.8636
Epoch 49/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3968 - accuracy: 0.8772
Epoch 50/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4710 - accuracy: 0.8538
Epoch 51/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4094 - accuracy: 0.8676
Epoch 52/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3828 - accuracy: 0.8799
Epoch 53/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3527 - accuracy: 0.8864
Epoch 54/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3363 - accuracy: 0.8915
Epoch 55/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3783 - accuracy: 0.8800
Epoch 56/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4367 - accuracy: 0.8669
Epoch 57/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3266 - accuracy: 0.8912
Epoch 58/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3675 - accuracy: 0.8835
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3289 - accuracy: 0.8950
Epoch 60/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3059 - accuracy: 0.9018
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2942 - accuracy: 0.9058
Epoch 62/100
48/48 [==============================] - 1s 12ms/step - loss: 1.2872 - accuracy: 0.7091
Epoch 63/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5554 - accuracy: 0.8350
Epoch 64/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4321 - accuracy: 0.8608
Epoch 65/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3827 - accuracy: 0.8789
Epoch 66/100
48/48 [==============================] - 1s 13ms/step - loss: 0.3532 - accuracy: 0.8875
Epoch 67/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3407 - accuracy: 0.8930
Epoch 68/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3052 - accuracy: 0.9001
Epoch 69/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3375 - accuracy: 0.8915
Epoch 70/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3190 - accuracy: 0.8985
Epoch 71/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2910 - accuracy: 0.9040
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2795 - accuracy: 0.9095
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2823 - accuracy: 0.9090
Epoch 74/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2545 - accuracy: 0.9156
Epoch 75/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2371 - accuracy: 0.9244
Epoch 76/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2365 - accuracy: 0.9242
Epoch 77/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2340 - accuracy: 0.9286
Epoch 78/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2307 - accuracy: 0.9306
Epoch 79/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2280 - accuracy: 0.9272
Epoch 80/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2118 - accuracy: 0.9352
Epoch 81/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4004 - accuracy: 0.8867
Epoch 82/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2560 - accuracy: 0.9176
Epoch 83/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2208 - accuracy: 0.9301
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2065 - accuracy: 0.9322
Epoch 85/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2198 - accuracy: 0.9309
Epoch 86/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2026 - accuracy: 0.9342
Epoch 87/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2115 - accuracy: 0.9301
Epoch 88/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1959 - accuracy: 0.9339
Epoch 89/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1979 - accuracy: 0.9352
Epoch 90/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1955 - accuracy: 0.9360
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1967 - accuracy: 0.9367
Epoch 92/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1789 - accuracy: 0.9437
Epoch 93/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1952 - accuracy: 0.9402
Epoch 94/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1855 - accuracy: 0.9367
Epoch 95/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1738 - accuracy: 0.9419
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1948 - accuracy: 0.9409
Epoch 97/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2586 - accuracy: 0.9229
Epoch 98/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1765 - accuracy: 0.9442
Epoch 99/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1701 - accuracy: 0.9423
Epoch 100/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1763 - accuracy: 0.9468
24/24 [==============================] - 0s 4ms/step - loss: 0.2828 - accuracy: 0.9169
Epoch 1/100
48/48 [==============================] - 2s 11ms/step - loss: 2.6455 - accuracy: 0.0905
Epoch 2/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5666 - accuracy: 0.1246
Epoch 3/100
48/48 [==============================] - 1s 12ms/step - loss: 2.5199 - accuracy: 0.1377
Epoch 4/100
48/48 [==============================] - 1s 12ms/step - loss: 2.4204 - accuracy: 0.1726
Epoch 5/100
48/48 [==============================] - 1s 12ms/step - loss: 2.2725 - accuracy: 0.2401
Epoch 6/100
48/48 [==============================] - 1s 12ms/step - loss: 2.1212 - accuracy: 0.3037
Epoch 7/100
48/48 [==============================] - 1s 12ms/step - loss: 2.0708 - accuracy: 0.3255
Epoch 8/100
48/48 [==============================] - 1s 12ms/step - loss: 1.8957 - accuracy: 0.3785
Epoch 9/100
48/48 [==============================] - 1s 12ms/step - loss: 1.8460 - accuracy: 0.4080
Epoch 10/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7082 - accuracy: 0.4487
Epoch 11/100
48/48 [==============================] - 1s 12ms/step - loss: 1.6120 - accuracy: 0.4782
Epoch 12/100
48/48 [==============================] - 1s 11ms/step - loss: 1.6234 - accuracy: 0.4919
Epoch 13/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4051 - accuracy: 0.5534
Epoch 14/100
48/48 [==============================] - 1s 12ms/step - loss: 1.7425 - accuracy: 0.4717
Epoch 15/100
48/48 [==============================] - 1s 12ms/step - loss: 1.4724 - accuracy: 0.5489
Epoch 16/100
48/48 [==============================] - 1s 11ms/step - loss: 1.2346 - accuracy: 0.6018
Epoch 17/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1938 - accuracy: 0.6254
Epoch 18/100
48/48 [==============================] - 1s 12ms/step - loss: 1.1802 - accuracy: 0.6300
Epoch 19/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0184 - accuracy: 0.6740
Epoch 20/100
48/48 [==============================] - 1s 12ms/step - loss: 0.9659 - accuracy: 0.6906
Epoch 21/100
48/48 [==============================] - 1s 13ms/step - loss: 1.0943 - accuracy: 0.6694
Epoch 22/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8673 - accuracy: 0.7215
Epoch 23/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8269 - accuracy: 0.7328
Epoch 24/100
48/48 [==============================] - 1s 12ms/step - loss: 0.8200 - accuracy: 0.7395
Epoch 25/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7948 - accuracy: 0.7445
Epoch 26/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7140 - accuracy: 0.7757
Epoch 27/100
48/48 [==============================] - 1s 12ms/step - loss: 0.7359 - accuracy: 0.7742
Epoch 28/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6606 - accuracy: 0.7897
Epoch 29/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6486 - accuracy: 0.7937
Epoch 30/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6390 - accuracy: 0.7937
Epoch 31/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5726 - accuracy: 0.8162
Epoch 32/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5601 - accuracy: 0.8217
Epoch 33/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5634 - accuracy: 0.8182
Epoch 34/100
48/48 [==============================] - 1s 12ms/step - loss: 1.0220 - accuracy: 0.7074
Epoch 35/100
48/48 [==============================] - 1s 12ms/step - loss: 0.6362 - accuracy: 0.8001
Epoch 36/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5609 - accuracy: 0.8224
Epoch 37/100
48/48 [==============================] - 1s 12ms/step - loss: 0.5292 - accuracy: 0.8395
Epoch 38/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4608 - accuracy: 0.8530
Epoch 39/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4546 - accuracy: 0.8513
Epoch 40/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4265 - accuracy: 0.8633
Epoch 41/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4317 - accuracy: 0.8608
Epoch 42/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3883 - accuracy: 0.8752
Epoch 43/100
48/48 [==============================] - 1s 11ms/step - loss: 0.4904 - accuracy: 0.8530
Epoch 44/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3886 - accuracy: 0.8742
Epoch 45/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3361 - accuracy: 0.8895
Epoch 46/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4010 - accuracy: 0.8719
Epoch 47/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3537 - accuracy: 0.8867
Epoch 48/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3287 - accuracy: 0.8975
Epoch 49/100
48/48 [==============================] - 1s 11ms/step - loss: 0.3301 - accuracy: 0.8928
Epoch 50/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3009 - accuracy: 0.9031
Epoch 51/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3053 - accuracy: 0.9016
Epoch 52/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3309 - accuracy: 0.8947
Epoch 53/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2920 - accuracy: 0.9030
Epoch 54/100
48/48 [==============================] - 1s 12ms/step - loss: 0.3049 - accuracy: 0.9045
Epoch 55/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2744 - accuracy: 0.9098
Epoch 56/100
48/48 [==============================] - 1s 11ms/step - loss: 0.2620 - accuracy: 0.9153
Epoch 57/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2535 - accuracy: 0.9204
Epoch 58/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2751 - accuracy: 0.9103
Epoch 59/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2433 - accuracy: 0.9234
Epoch 60/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2507 - accuracy: 0.9211
Epoch 61/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2450 - accuracy: 0.9199
Epoch 62/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2382 - accuracy: 0.9229
Epoch 63/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2340 - accuracy: 0.9261
Epoch 64/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2168 - accuracy: 0.9317
Epoch 65/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2147 - accuracy: 0.9282
Epoch 66/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2229 - accuracy: 0.9257
Epoch 67/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1996 - accuracy: 0.9352
Epoch 68/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2376 - accuracy: 0.9234
Epoch 69/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2118 - accuracy: 0.9324
Epoch 70/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2076 - accuracy: 0.9324
Epoch 71/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1944 - accuracy: 0.9397
Epoch 72/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1996 - accuracy: 0.9367
Epoch 73/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1854 - accuracy: 0.9415
Epoch 74/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1726 - accuracy: 0.9440
Epoch 75/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2730 - accuracy: 0.9231
Epoch 76/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1853 - accuracy: 0.9415
Epoch 77/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1687 - accuracy: 0.9445
Epoch 78/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2082 - accuracy: 0.9370
Epoch 79/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1759 - accuracy: 0.9435
Epoch 80/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2552 - accuracy: 0.9234
Epoch 81/100
48/48 [==============================] - 1s 11ms/step - loss: 0.6185 - accuracy: 0.8442
Epoch 82/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2407 - accuracy: 0.9279
Epoch 83/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1970 - accuracy: 0.9349
Epoch 84/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1822 - accuracy: 0.9422
Epoch 85/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2812 - accuracy: 0.9141
Epoch 86/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1743 - accuracy: 0.9457
Epoch 87/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1547 - accuracy: 0.9533
Epoch 88/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1601 - accuracy: 0.9493
Epoch 89/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1667 - accuracy: 0.9447
Epoch 90/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1407 - accuracy: 0.9550
Epoch 91/100
48/48 [==============================] - 1s 12ms/step - loss: 0.4129 - accuracy: 0.8884
Epoch 92/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1751 - accuracy: 0.9453
Epoch 93/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1616 - accuracy: 0.9493
Epoch 94/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1580 - accuracy: 0.9475
Epoch 95/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1477 - accuracy: 0.9541
Epoch 96/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1626 - accuracy: 0.9463
Epoch 97/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1463 - accuracy: 0.9545
Epoch 98/100
48/48 [==============================] - 1s 12ms/step - loss: 0.1281 - accuracy: 0.9575
Epoch 99/100
48/48 [==============================] - 1s 12ms/step - loss: 0.2030 - accuracy: 0.9407
Epoch 100/100
48/48 [==============================] - 1s 11ms/step - loss: 0.1461 - accuracy: 0.9541
24/24 [==============================] - 0s 4ms/step - loss: 0.2891 - accuracy: 0.9259
Epoch 1/100
71/71 [==============================] - 1s 10ms/step - loss: 2.6214 - accuracy: 0.1061
Epoch 2/100
71/71 [==============================] - 1s 10ms/step - loss: 2.5208 - accuracy: 0.1368
Epoch 3/100
71/71 [==============================] - 1s 10ms/step - loss: 2.4061 - accuracy: 0.1887
Epoch 4/100
71/71 [==============================] - 1s 10ms/step - loss: 2.2031 - accuracy: 0.2713
Epoch 5/100
71/71 [==============================] - 1s 10ms/step - loss: 2.0347 - accuracy: 0.3340
Epoch 6/100
71/71 [==============================] - 1s 10ms/step - loss: 1.9135 - accuracy: 0.3768
Epoch 7/100
71/71 [==============================] - 1s 10ms/step - loss: 1.7657 - accuracy: 0.4229
Epoch 8/100
71/71 [==============================] - 1s 10ms/step - loss: 1.6499 - accuracy: 0.4716
Epoch 9/100
71/71 [==============================] - 1s 10ms/step - loss: 1.5495 - accuracy: 0.5070
Epoch 10/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4224 - accuracy: 0.5492
Epoch 11/100
71/71 [==============================] - 1s 10ms/step - loss: 1.3245 - accuracy: 0.5722
Epoch 12/100
71/71 [==============================] - 1s 10ms/step - loss: 1.2332 - accuracy: 0.6066
Epoch 13/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1688 - accuracy: 0.6330
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0653 - accuracy: 0.6656
Epoch 15/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0163 - accuracy: 0.6821
Epoch 16/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9446 - accuracy: 0.6982
Epoch 17/100
71/71 [==============================] - 1s 10ms/step - loss: 0.9108 - accuracy: 0.7095
Epoch 18/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8536 - accuracy: 0.7317
Epoch 19/100
71/71 [==============================] - 1s 10ms/step - loss: 0.8283 - accuracy: 0.7342
Epoch 20/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7546 - accuracy: 0.7631
Epoch 21/100
71/71 [==============================] - 1s 10ms/step - loss: 0.7089 - accuracy: 0.7781
Epoch 22/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6860 - accuracy: 0.7864
Epoch 23/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6473 - accuracy: 0.7992
Epoch 24/100
71/71 [==============================] - 1s 10ms/step - loss: 0.6393 - accuracy: 0.7984
Epoch 25/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5789 - accuracy: 0.8159
Epoch 26/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5769 - accuracy: 0.8226
Epoch 27/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5664 - accuracy: 0.8268
Epoch 28/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5157 - accuracy: 0.8384
Epoch 29/100
71/71 [==============================] - 1s 10ms/step - loss: 0.5198 - accuracy: 0.8414
Epoch 30/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4840 - accuracy: 0.8465
Epoch 31/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4675 - accuracy: 0.8546
Epoch 32/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4524 - accuracy: 0.8634
Epoch 33/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4441 - accuracy: 0.8614
Epoch 34/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4289 - accuracy: 0.8656
Epoch 35/100
71/71 [==============================] - 1s 10ms/step - loss: 0.4299 - accuracy: 0.8705
Epoch 36/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3941 - accuracy: 0.8828
Epoch 37/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3901 - accuracy: 0.8780
Epoch 38/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3709 - accuracy: 0.8856
Epoch 39/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3579 - accuracy: 0.8849
Epoch 40/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3607 - accuracy: 0.8931
Epoch 41/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3634 - accuracy: 0.8891
Epoch 42/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3276 - accuracy: 0.8979
Epoch 43/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3400 - accuracy: 0.8967
Epoch 44/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3294 - accuracy: 0.8972
Epoch 45/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3296 - accuracy: 0.8996
Epoch 46/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3204 - accuracy: 0.8992
Epoch 47/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3234 - accuracy: 0.9021
Epoch 48/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2950 - accuracy: 0.9066
Epoch 49/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2784 - accuracy: 0.9149
Epoch 50/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3120 - accuracy: 0.9044
Epoch 51/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2876 - accuracy: 0.9128
Epoch 52/100
71/71 [==============================] - 1s 10ms/step - loss: 0.3013 - accuracy: 0.9109
Epoch 53/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2843 - accuracy: 0.9103
Epoch 54/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2839 - accuracy: 0.9157
Epoch 55/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2729 - accuracy: 0.9149
Epoch 56/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2696 - accuracy: 0.9179
Epoch 57/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2745 - accuracy: 0.9174
Epoch 58/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2635 - accuracy: 0.9230
Epoch 59/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2476 - accuracy: 0.9248
Epoch 60/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2576 - accuracy: 0.9245
Epoch 61/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2694 - accuracy: 0.9198
Epoch 62/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2495 - accuracy: 0.9273
Epoch 63/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2554 - accuracy: 0.9231
Epoch 64/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2507 - accuracy: 0.9258
Epoch 65/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2336 - accuracy: 0.9283
Epoch 66/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2570 - accuracy: 0.9241
Epoch 67/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2475 - accuracy: 0.9255
Epoch 68/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2535 - accuracy: 0.9281
Epoch 69/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2408 - accuracy: 0.9282
Epoch 70/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2310 - accuracy: 0.9319
Epoch 71/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2262 - accuracy: 0.9345
Epoch 72/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2336 - accuracy: 0.9361
Epoch 73/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2355 - accuracy: 0.9314
Epoch 74/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2353 - accuracy: 0.9304
Epoch 75/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2314 - accuracy: 0.9348
Epoch 76/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2388 - accuracy: 0.9305
Epoch 77/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2374 - accuracy: 0.9334
Epoch 78/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2207 - accuracy: 0.9340
Epoch 79/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2326 - accuracy: 0.9339
Epoch 80/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2295 - accuracy: 0.9352
Epoch 81/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2279 - accuracy: 0.9364
Epoch 82/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2363 - accuracy: 0.9353
Epoch 83/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2414 - accuracy: 0.9345
Epoch 84/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2217 - accuracy: 0.9375
Epoch 85/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2240 - accuracy: 0.9369
Epoch 86/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2270 - accuracy: 0.9353
Epoch 87/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2057 - accuracy: 0.9424
Epoch 88/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2212 - accuracy: 0.9372
Epoch 89/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2234 - accuracy: 0.9383
Epoch 90/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2248 - accuracy: 0.9369
Epoch 91/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2167 - accuracy: 0.9386
Epoch 92/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2026 - accuracy: 0.9437
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2335 - accuracy: 0.9356
Epoch 94/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2047 - accuracy: 0.9407
Epoch 95/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2131 - accuracy: 0.9365
Epoch 96/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2187 - accuracy: 0.9426
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2268 - accuracy: 0.9392
Epoch 98/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2384 - accuracy: 0.9395
Epoch 99/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2296 - accuracy: 0.9389
Epoch 100/100
71/71 [==============================] - 1s 10ms/step - loss: 0.2164 - accuracy: 0.9411
Best Score: 0.9079536199569702 Best Params: {'optimizer': 'rmsprop', 'dropout': 0.4}
In [115]:
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<10:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128)
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 15ms/step - loss: 2.6241 - accuracy: 0.1059 - val_loss: 2.6571 - val_accuracy: 0.0927
Epoch 2/100
71/71 [==============================] - 1s 11ms/step - loss: 2.5163 - accuracy: 0.1515 - val_loss: 2.5149 - val_accuracy: 0.1707
Epoch 3/100
71/71 [==============================] - 1s 11ms/step - loss: 2.3860 - accuracy: 0.2100 - val_loss: 2.3884 - val_accuracy: 0.2620
Epoch 4/100
71/71 [==============================] - 1s 11ms/step - loss: 2.2219 - accuracy: 0.2633 - val_loss: 2.1408 - val_accuracy: 0.3400
Epoch 5/100
71/71 [==============================] - 1s 12ms/step - loss: 2.0637 - accuracy: 0.3247 - val_loss: 1.9774 - val_accuracy: 0.4063
Epoch 6/100
71/71 [==============================] - 1s 11ms/step - loss: 1.9182 - accuracy: 0.3787 - val_loss: 1.9229 - val_accuracy: 0.3747
Epoch 7/100
71/71 [==============================] - 1s 12ms/step - loss: 1.7745 - accuracy: 0.4339 - val_loss: 2.1766 - val_accuracy: 0.3387
Epoch 8/100
71/71 [==============================] - 1s 11ms/step - loss: 1.6803 - accuracy: 0.4662 - val_loss: 1.5834 - val_accuracy: 0.4840
Epoch 9/100
71/71 [==============================] - 1s 11ms/step - loss: 1.5315 - accuracy: 0.5045 - val_loss: 1.4166 - val_accuracy: 0.5297
Epoch 10/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4279 - accuracy: 0.5449 - val_loss: 1.2789 - val_accuracy: 0.5990
Epoch 11/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3564 - accuracy: 0.5650 - val_loss: 1.4045 - val_accuracy: 0.5553
Epoch 12/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2547 - accuracy: 0.6030 - val_loss: 1.1063 - val_accuracy: 0.6643
Epoch 13/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1522 - accuracy: 0.6357 - val_loss: 1.1159 - val_accuracy: 0.6437
Epoch 14/100
71/71 [==============================] - 1s 12ms/step - loss: 1.0820 - accuracy: 0.6565 - val_loss: 1.1382 - val_accuracy: 0.6203
Epoch 15/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9922 - accuracy: 0.6860 - val_loss: 0.8624 - val_accuracy: 0.7310
Epoch 16/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9519 - accuracy: 0.7024 - val_loss: 1.0454 - val_accuracy: 0.6743
Epoch 17/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9029 - accuracy: 0.7157 - val_loss: 0.7797 - val_accuracy: 0.7517
Epoch 18/100
71/71 [==============================] - 1s 11ms/step - loss: 0.8479 - accuracy: 0.7308 - val_loss: 0.6955 - val_accuracy: 0.7883
Epoch 19/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7945 - accuracy: 0.7479 - val_loss: 0.6520 - val_accuracy: 0.7977
Epoch 20/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7500 - accuracy: 0.7576 - val_loss: 0.6024 - val_accuracy: 0.8067
Epoch 21/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7021 - accuracy: 0.7706 - val_loss: 0.5350 - val_accuracy: 0.8340
Epoch 22/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6644 - accuracy: 0.7844 - val_loss: 0.6842 - val_accuracy: 0.7897
Epoch 23/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6297 - accuracy: 0.8032 - val_loss: 0.6426 - val_accuracy: 0.7990
Epoch 24/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6252 - accuracy: 0.8005 - val_loss: 0.4619 - val_accuracy: 0.8593
Epoch 25/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5762 - accuracy: 0.8166 - val_loss: 0.4917 - val_accuracy: 0.8553
Epoch 26/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5682 - accuracy: 0.8197 - val_loss: 0.4468 - val_accuracy: 0.8610
Epoch 27/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5291 - accuracy: 0.8330 - val_loss: 0.6750 - val_accuracy: 0.7857
Epoch 28/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5172 - accuracy: 0.8351 - val_loss: 0.4642 - val_accuracy: 0.8597
Epoch 29/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4929 - accuracy: 0.8435 - val_loss: 0.6602 - val_accuracy: 0.7957
Epoch 30/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4742 - accuracy: 0.8510 - val_loss: 0.3945 - val_accuracy: 0.8830
Epoch 31/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4577 - accuracy: 0.8586 - val_loss: 0.3962 - val_accuracy: 0.8823
Epoch 32/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4471 - accuracy: 0.8610 - val_loss: 0.4067 - val_accuracy: 0.8790
Epoch 33/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4335 - accuracy: 0.8663 - val_loss: 0.4904 - val_accuracy: 0.8537
Epoch 34/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4112 - accuracy: 0.8742 - val_loss: 0.3680 - val_accuracy: 0.8870
Epoch 35/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4241 - accuracy: 0.8628 - val_loss: 0.3373 - val_accuracy: 0.8983
Epoch 36/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4015 - accuracy: 0.8752 - val_loss: 0.3283 - val_accuracy: 0.9050
Epoch 37/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3919 - accuracy: 0.8777 - val_loss: 0.4270 - val_accuracy: 0.8807
Epoch 38/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3894 - accuracy: 0.8807 - val_loss: 0.3205 - val_accuracy: 0.9040
Epoch 39/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3765 - accuracy: 0.8868 - val_loss: 0.3160 - val_accuracy: 0.9080
Epoch 40/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3600 - accuracy: 0.8906 - val_loss: 0.3397 - val_accuracy: 0.9030
Epoch 41/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3648 - accuracy: 0.8868 - val_loss: 0.3744 - val_accuracy: 0.8953
Epoch 42/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3444 - accuracy: 0.8942 - val_loss: 0.3232 - val_accuracy: 0.9060
Epoch 43/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3266 - accuracy: 0.8992 - val_loss: 0.3282 - val_accuracy: 0.9130
Epoch 44/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3264 - accuracy: 0.8984 - val_loss: 0.2690 - val_accuracy: 0.9220
Epoch 45/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3204 - accuracy: 0.9019 - val_loss: 0.2603 - val_accuracy: 0.9253
Epoch 46/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3192 - accuracy: 0.9040 - val_loss: 0.2972 - val_accuracy: 0.9143
Epoch 47/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2898 - accuracy: 0.9107 - val_loss: 0.3448 - val_accuracy: 0.8977
Epoch 48/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3147 - accuracy: 0.9027 - val_loss: 0.3264 - val_accuracy: 0.9057
Epoch 49/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3005 - accuracy: 0.9081 - val_loss: 0.3129 - val_accuracy: 0.9053
Epoch 50/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3055 - accuracy: 0.9072 - val_loss: 0.2823 - val_accuracy: 0.9180
Epoch 51/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2881 - accuracy: 0.9089 - val_loss: 0.2840 - val_accuracy: 0.9177
Epoch 52/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2817 - accuracy: 0.9140 - val_loss: 0.3198 - val_accuracy: 0.9107
Epoch 53/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2833 - accuracy: 0.9147 - val_loss: 0.2414 - val_accuracy: 0.9343
Epoch 54/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2904 - accuracy: 0.9152 - val_loss: 0.3353 - val_accuracy: 0.9037
Epoch 55/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2621 - accuracy: 0.9187 - val_loss: 0.4295 - val_accuracy: 0.8707
Epoch 56/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2624 - accuracy: 0.9215 - val_loss: 0.3019 - val_accuracy: 0.9157
Epoch 57/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2911 - accuracy: 0.9161 - val_loss: 0.2691 - val_accuracy: 0.9233
Epoch 58/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2703 - accuracy: 0.9204 - val_loss: 0.3901 - val_accuracy: 0.8870
Epoch 59/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2694 - accuracy: 0.9181 - val_loss: 0.2285 - val_accuracy: 0.9370
Epoch 60/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2529 - accuracy: 0.9258 - val_loss: 0.2478 - val_accuracy: 0.9297
Epoch 61/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2517 - accuracy: 0.9249 - val_loss: 0.2583 - val_accuracy: 0.9277
Epoch 62/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2497 - accuracy: 0.9256 - val_loss: 0.2917 - val_accuracy: 0.9217
Epoch 63/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2520 - accuracy: 0.9246 - val_loss: 0.2676 - val_accuracy: 0.9257
Epoch 64/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2483 - accuracy: 0.9262 - val_loss: 0.3530 - val_accuracy: 0.8960
Epoch 65/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2585 - accuracy: 0.9242 - val_loss: 0.2612 - val_accuracy: 0.9287
Epoch 66/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2348 - accuracy: 0.9318 - val_loss: 0.2999 - val_accuracy: 0.9137
Epoch 67/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2378 - accuracy: 0.9273 - val_loss: 0.2324 - val_accuracy: 0.9370
Epoch 68/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2644 - accuracy: 0.9222 - val_loss: 0.2204 - val_accuracy: 0.9420
Epoch 69/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2215 - accuracy: 0.9341 - val_loss: 0.3224 - val_accuracy: 0.9093
Epoch 70/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2438 - accuracy: 0.9289 - val_loss: 0.3222 - val_accuracy: 0.9117
Epoch 71/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2329 - accuracy: 0.9323 - val_loss: 0.2748 - val_accuracy: 0.9253
Epoch 72/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2438 - accuracy: 0.9301 - val_loss: 0.2455 - val_accuracy: 0.9350
Epoch 73/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2171 - accuracy: 0.9360 - val_loss: 0.2600 - val_accuracy: 0.9320
Epoch 74/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2345 - accuracy: 0.9334 - val_loss: 0.3482 - val_accuracy: 0.9110
Epoch 75/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2252 - accuracy: 0.9343 - val_loss: 0.2433 - val_accuracy: 0.9367
Epoch 76/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2345 - accuracy: 0.9348 - val_loss: 0.2371 - val_accuracy: 0.9373
Epoch 77/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2392 - accuracy: 0.9322 - val_loss: 0.3156 - val_accuracy: 0.9090
Epoch 78/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2278 - accuracy: 0.9341 - val_loss: 0.2605 - val_accuracy: 0.9370
Epoch 79/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2269 - accuracy: 0.9329 - val_loss: 0.2423 - val_accuracy: 0.9327
Epoch 80/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2214 - accuracy: 0.9362 - val_loss: 0.2937 - val_accuracy: 0.9240
Epoch 81/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2302 - accuracy: 0.9363 - val_loss: 0.3498 - val_accuracy: 0.9087
Epoch 82/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2166 - accuracy: 0.9376 - val_loss: 0.2317 - val_accuracy: 0.9413
Epoch 83/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2374 - accuracy: 0.9338 - val_loss: 0.2526 - val_accuracy: 0.9323
Epoch 84/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2188 - accuracy: 0.9386 - val_loss: 0.2542 - val_accuracy: 0.9347
Epoch 85/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2091 - accuracy: 0.9426 - val_loss: 0.2494 - val_accuracy: 0.9327
Epoch 86/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2257 - accuracy: 0.9390 - val_loss: 0.2584 - val_accuracy: 0.9343
Epoch 87/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2141 - accuracy: 0.9373 - val_loss: 0.2611 - val_accuracy: 0.9343
Epoch 88/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2183 - accuracy: 0.9343 - val_loss: 0.2677 - val_accuracy: 0.9287
Epoch 89/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2377 - accuracy: 0.9325 - val_loss: 0.2255 - val_accuracy: 0.9370
Epoch 90/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1996 - accuracy: 0.9415 - val_loss: 0.2220 - val_accuracy: 0.9430
Epoch 91/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2231 - accuracy: 0.9379 - val_loss: 0.2990 - val_accuracy: 0.9260
Epoch 92/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2203 - accuracy: 0.9393 - val_loss: 0.2556 - val_accuracy: 0.9337
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2416 - accuracy: 0.9332 - val_loss: 0.2525 - val_accuracy: 0.9377
Epoch 94/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2077 - accuracy: 0.9405 - val_loss: 0.2463 - val_accuracy: 0.9367
Epoch 95/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2307 - accuracy: 0.9377 - val_loss: 0.2910 - val_accuracy: 0.9220
Epoch 96/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2344 - accuracy: 0.9351 - val_loss: 0.3105 - val_accuracy: 0.9203
Epoch 97/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2109 - accuracy: 0.9441 - val_loss: 0.3500 - val_accuracy: 0.9080
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2064 - accuracy: 0.9445 - val_loss: 0.2210 - val_accuracy: 0.9470
Epoch 99/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2256 - accuracy: 0.9394 - val_loss: 0.3512 - val_accuracy: 0.9073
Epoch 100/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2222 - accuracy: 0.9383 - val_loss: 0.2472 - val_accuracy: 0.9410
94/94 [==============================] - 0s 3ms/step - loss: 0.2234 - accuracy: 0.9417
CNN Error: 5.83%

Learning Rate Scheduler¶

Now we will add learning rate scheduler to optimize the training and enhance the model's performance¶

In [121]:
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<70:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
callback = LearningRateScheduler(scheduleLR)
history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128,callbacks=[callback])
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 14ms/step - loss: 2.6045 - accuracy: 0.1113 - val_loss: 2.6247 - val_accuracy: 0.1013 - lr: 0.0010
Epoch 2/100
71/71 [==============================] - 1s 11ms/step - loss: 2.4992 - accuracy: 0.1512 - val_loss: 2.5132 - val_accuracy: 0.1323 - lr: 0.0010
Epoch 3/100
71/71 [==============================] - 1s 12ms/step - loss: 2.3191 - accuracy: 0.2225 - val_loss: 2.2169 - val_accuracy: 0.2767 - lr: 0.0010
Epoch 4/100
71/71 [==============================] - 1s 11ms/step - loss: 2.1596 - accuracy: 0.2901 - val_loss: 2.1900 - val_accuracy: 0.2933 - lr: 0.0010
Epoch 5/100
71/71 [==============================] - 1s 11ms/step - loss: 2.0032 - accuracy: 0.3463 - val_loss: 2.1145 - val_accuracy: 0.2950 - lr: 0.0010
Epoch 6/100
71/71 [==============================] - 1s 11ms/step - loss: 1.8761 - accuracy: 0.3930 - val_loss: 1.8616 - val_accuracy: 0.3853 - lr: 0.0010
Epoch 7/100
71/71 [==============================] - 1s 11ms/step - loss: 1.7578 - accuracy: 0.4317 - val_loss: 1.8727 - val_accuracy: 0.4023 - lr: 0.0010
Epoch 8/100
71/71 [==============================] - 1s 11ms/step - loss: 1.6465 - accuracy: 0.4682 - val_loss: 1.4581 - val_accuracy: 0.5520 - lr: 0.0010
Epoch 9/100
71/71 [==============================] - 1s 12ms/step - loss: 1.5328 - accuracy: 0.5066 - val_loss: 1.4393 - val_accuracy: 0.5493 - lr: 0.0010
Epoch 10/100
71/71 [==============================] - 1s 11ms/step - loss: 1.4232 - accuracy: 0.5424 - val_loss: 1.2501 - val_accuracy: 0.6053 - lr: 0.0010
Epoch 11/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3282 - accuracy: 0.5763 - val_loss: 1.2882 - val_accuracy: 0.5877 - lr: 0.0010
Epoch 12/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2344 - accuracy: 0.6062 - val_loss: 1.0507 - val_accuracy: 0.6597 - lr: 0.0010
Epoch 13/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1627 - accuracy: 0.6367 - val_loss: 1.0497 - val_accuracy: 0.6613 - lr: 0.0010
Epoch 14/100
71/71 [==============================] - 1s 10ms/step - loss: 1.0892 - accuracy: 0.6547 - val_loss: 0.9319 - val_accuracy: 0.7013 - lr: 0.0010
Epoch 15/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0381 - accuracy: 0.6748 - val_loss: 0.8847 - val_accuracy: 0.7180 - lr: 0.0010
Epoch 16/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9725 - accuracy: 0.6924 - val_loss: 0.8808 - val_accuracy: 0.7257 - lr: 0.0010
Epoch 17/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9070 - accuracy: 0.7148 - val_loss: 1.0332 - val_accuracy: 0.6570 - lr: 0.0010
Epoch 18/100
71/71 [==============================] - 1s 11ms/step - loss: 0.8729 - accuracy: 0.7191 - val_loss: 0.7338 - val_accuracy: 0.7643 - lr: 0.0010
Epoch 19/100
71/71 [==============================] - 1s 11ms/step - loss: 0.8106 - accuracy: 0.7406 - val_loss: 0.7500 - val_accuracy: 0.7613 - lr: 0.0010
Epoch 20/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7759 - accuracy: 0.7533 - val_loss: 0.6381 - val_accuracy: 0.7990 - lr: 0.0010
Epoch 21/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7373 - accuracy: 0.7687 - val_loss: 0.6084 - val_accuracy: 0.8200 - lr: 0.0010
Epoch 22/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7244 - accuracy: 0.7750 - val_loss: 0.5626 - val_accuracy: 0.8370 - lr: 0.0010
Epoch 23/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6705 - accuracy: 0.7871 - val_loss: 0.5523 - val_accuracy: 0.8317 - lr: 0.0010
Epoch 24/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6425 - accuracy: 0.7926 - val_loss: 0.4926 - val_accuracy: 0.8527 - lr: 0.0010
Epoch 25/100
71/71 [==============================] - 1s 11ms/step - loss: 0.6130 - accuracy: 0.8079 - val_loss: 0.5096 - val_accuracy: 0.8487 - lr: 0.0010
Epoch 26/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5885 - accuracy: 0.8149 - val_loss: 0.6480 - val_accuracy: 0.7947 - lr: 0.0010
Epoch 27/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5625 - accuracy: 0.8193 - val_loss: 0.4381 - val_accuracy: 0.8637 - lr: 0.0010
Epoch 28/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5466 - accuracy: 0.8264 - val_loss: 0.4285 - val_accuracy: 0.8697 - lr: 0.0010
Epoch 29/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5265 - accuracy: 0.8350 - val_loss: 0.4666 - val_accuracy: 0.8507 - lr: 0.0010
Epoch 30/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5249 - accuracy: 0.8356 - val_loss: 0.5147 - val_accuracy: 0.8427 - lr: 0.0010
Epoch 31/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4936 - accuracy: 0.8449 - val_loss: 0.4184 - val_accuracy: 0.8683 - lr: 0.0010
Epoch 32/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4722 - accuracy: 0.8552 - val_loss: 0.3811 - val_accuracy: 0.8790 - lr: 0.0010
Epoch 33/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4443 - accuracy: 0.8626 - val_loss: 0.4886 - val_accuracy: 0.8477 - lr: 0.0010
Epoch 34/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4653 - accuracy: 0.8538 - val_loss: 0.3757 - val_accuracy: 0.8830 - lr: 0.0010
Epoch 35/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4263 - accuracy: 0.8638 - val_loss: 0.3335 - val_accuracy: 0.8970 - lr: 0.0010
Epoch 36/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4276 - accuracy: 0.8695 - val_loss: 0.4002 - val_accuracy: 0.8767 - lr: 0.0010
Epoch 37/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4015 - accuracy: 0.8780 - val_loss: 0.3141 - val_accuracy: 0.9070 - lr: 0.0010
Epoch 38/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3860 - accuracy: 0.8756 - val_loss: 0.3126 - val_accuracy: 0.9043 - lr: 0.0010
Epoch 39/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3648 - accuracy: 0.8854 - val_loss: 0.3369 - val_accuracy: 0.8953 - lr: 0.0010
Epoch 40/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3868 - accuracy: 0.8833 - val_loss: 0.3242 - val_accuracy: 0.8993 - lr: 0.0010
Epoch 41/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3578 - accuracy: 0.8862 - val_loss: 0.3233 - val_accuracy: 0.8987 - lr: 0.0010
Epoch 42/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3741 - accuracy: 0.8844 - val_loss: 0.3275 - val_accuracy: 0.8980 - lr: 0.0010
Epoch 43/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3523 - accuracy: 0.8872 - val_loss: 0.7291 - val_accuracy: 0.7957 - lr: 0.0010
Epoch 44/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3613 - accuracy: 0.8908 - val_loss: 0.2936 - val_accuracy: 0.9117 - lr: 0.0010
Epoch 45/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3444 - accuracy: 0.8926 - val_loss: 0.2935 - val_accuracy: 0.9123 - lr: 0.0010
Epoch 46/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3311 - accuracy: 0.8962 - val_loss: 0.3563 - val_accuracy: 0.9000 - lr: 0.0010
Epoch 47/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3250 - accuracy: 0.8998 - val_loss: 0.6147 - val_accuracy: 0.8247 - lr: 0.0010
Epoch 48/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3254 - accuracy: 0.8965 - val_loss: 0.2899 - val_accuracy: 0.9133 - lr: 0.0010
Epoch 49/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3182 - accuracy: 0.9043 - val_loss: 0.3008 - val_accuracy: 0.9137 - lr: 0.0010
Epoch 50/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3092 - accuracy: 0.9054 - val_loss: 0.3076 - val_accuracy: 0.9110 - lr: 0.0010
Epoch 51/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3095 - accuracy: 0.9066 - val_loss: 0.2720 - val_accuracy: 0.9157 - lr: 0.0010
Epoch 52/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3093 - accuracy: 0.9068 - val_loss: 0.3214 - val_accuracy: 0.9030 - lr: 0.0010
Epoch 53/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3070 - accuracy: 0.9068 - val_loss: 0.2792 - val_accuracy: 0.9160 - lr: 0.0010
Epoch 54/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2963 - accuracy: 0.9073 - val_loss: 0.2908 - val_accuracy: 0.9163 - lr: 0.0010
Epoch 55/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2926 - accuracy: 0.9103 - val_loss: 0.2852 - val_accuracy: 0.9170 - lr: 0.0010
Epoch 56/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2706 - accuracy: 0.9196 - val_loss: 0.2528 - val_accuracy: 0.9247 - lr: 0.0010
Epoch 57/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2854 - accuracy: 0.9155 - val_loss: 0.4375 - val_accuracy: 0.8667 - lr: 0.0010
Epoch 58/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2794 - accuracy: 0.9148 - val_loss: 0.2550 - val_accuracy: 0.9297 - lr: 0.0010
Epoch 59/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2791 - accuracy: 0.9163 - val_loss: 0.2422 - val_accuracy: 0.9310 - lr: 0.0010
Epoch 60/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2646 - accuracy: 0.9183 - val_loss: 0.2605 - val_accuracy: 0.9267 - lr: 0.0010
Epoch 61/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2572 - accuracy: 0.9232 - val_loss: 0.2447 - val_accuracy: 0.9330 - lr: 0.0010
Epoch 62/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2581 - accuracy: 0.9215 - val_loss: 0.4389 - val_accuracy: 0.8777 - lr: 0.0010
Epoch 63/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2574 - accuracy: 0.9238 - val_loss: 0.2367 - val_accuracy: 0.9327 - lr: 0.0010
Epoch 64/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2798 - accuracy: 0.9176 - val_loss: 0.3239 - val_accuracy: 0.9130 - lr: 0.0010
Epoch 65/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2568 - accuracy: 0.9255 - val_loss: 0.2485 - val_accuracy: 0.9287 - lr: 0.0010
Epoch 66/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2585 - accuracy: 0.9230 - val_loss: 0.2958 - val_accuracy: 0.9163 - lr: 0.0010
Epoch 67/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2695 - accuracy: 0.9183 - val_loss: 0.2408 - val_accuracy: 0.9337 - lr: 0.0010
Epoch 68/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2427 - accuracy: 0.9292 - val_loss: 0.2612 - val_accuracy: 0.9297 - lr: 0.0010
Epoch 69/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2426 - accuracy: 0.9290 - val_loss: 0.2565 - val_accuracy: 0.9280 - lr: 0.0010
Epoch 70/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2607 - accuracy: 0.9235 - val_loss: 0.2386 - val_accuracy: 0.9340 - lr: 0.0010
Epoch 71/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2182 - accuracy: 0.9369 - val_loss: 0.2685 - val_accuracy: 0.9280 - lr: 9.0484e-04
Epoch 72/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2203 - accuracy: 0.9341 - val_loss: 0.2258 - val_accuracy: 0.9393 - lr: 8.1873e-04
Epoch 73/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1993 - accuracy: 0.9409 - val_loss: 0.2256 - val_accuracy: 0.9370 - lr: 7.4082e-04
Epoch 74/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1838 - accuracy: 0.9466 - val_loss: 0.2078 - val_accuracy: 0.9420 - lr: 6.7032e-04
Epoch 75/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1803 - accuracy: 0.9472 - val_loss: 0.2137 - val_accuracy: 0.9410 - lr: 6.0653e-04
Epoch 76/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1663 - accuracy: 0.9506 - val_loss: 0.2282 - val_accuracy: 0.9387 - lr: 5.4881e-04
Epoch 77/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1655 - accuracy: 0.9482 - val_loss: 0.2081 - val_accuracy: 0.9433 - lr: 4.9659e-04
Epoch 78/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1579 - accuracy: 0.9549 - val_loss: 0.2076 - val_accuracy: 0.9443 - lr: 4.4933e-04
Epoch 79/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1459 - accuracy: 0.9579 - val_loss: 0.1928 - val_accuracy: 0.9470 - lr: 4.0657e-04
Epoch 80/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1459 - accuracy: 0.9569 - val_loss: 0.2166 - val_accuracy: 0.9400 - lr: 3.6788e-04
Epoch 81/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1381 - accuracy: 0.9595 - val_loss: 0.2075 - val_accuracy: 0.9447 - lr: 3.3287e-04
Epoch 82/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1362 - accuracy: 0.9586 - val_loss: 0.2041 - val_accuracy: 0.9440 - lr: 3.0119e-04
Epoch 83/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1307 - accuracy: 0.9599 - val_loss: 0.1999 - val_accuracy: 0.9503 - lr: 2.7253e-04
Epoch 84/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1348 - accuracy: 0.9598 - val_loss: 0.1916 - val_accuracy: 0.9503 - lr: 2.4660e-04
Epoch 85/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1391 - accuracy: 0.9596 - val_loss: 0.1917 - val_accuracy: 0.9503 - lr: 2.2313e-04
Epoch 86/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1256 - accuracy: 0.9630 - val_loss: 0.1927 - val_accuracy: 0.9490 - lr: 2.0190e-04
Epoch 87/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1139 - accuracy: 0.9654 - val_loss: 0.1958 - val_accuracy: 0.9490 - lr: 1.8268e-04
Epoch 88/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1203 - accuracy: 0.9650 - val_loss: 0.1951 - val_accuracy: 0.9487 - lr: 1.6530e-04
Epoch 89/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1205 - accuracy: 0.9650 - val_loss: 0.1950 - val_accuracy: 0.9497 - lr: 1.4957e-04
Epoch 90/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1202 - accuracy: 0.9657 - val_loss: 0.1956 - val_accuracy: 0.9483 - lr: 1.3534e-04
Epoch 91/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1078 - accuracy: 0.9677 - val_loss: 0.1864 - val_accuracy: 0.9517 - lr: 1.2246e-04
Epoch 92/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1089 - accuracy: 0.9661 - val_loss: 0.1863 - val_accuracy: 0.9510 - lr: 1.1080e-04
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1167 - accuracy: 0.9658 - val_loss: 0.1918 - val_accuracy: 0.9500 - lr: 1.0026e-04
Epoch 94/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1005 - accuracy: 0.9687 - val_loss: 0.1897 - val_accuracy: 0.9500 - lr: 9.0718e-05
Epoch 95/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1060 - accuracy: 0.9665 - val_loss: 0.1895 - val_accuracy: 0.9523 - lr: 8.2085e-05
Epoch 96/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1050 - accuracy: 0.9702 - val_loss: 0.1890 - val_accuracy: 0.9520 - lr: 7.4273e-05
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1211 - accuracy: 0.9638 - val_loss: 0.1885 - val_accuracy: 0.9490 - lr: 6.7205e-05
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1044 - accuracy: 0.9677 - val_loss: 0.1890 - val_accuracy: 0.9517 - lr: 6.0810e-05
Epoch 99/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1098 - accuracy: 0.9698 - val_loss: 0.1898 - val_accuracy: 0.9510 - lr: 5.5023e-05
Epoch 100/100
71/71 [==============================] - 1s 11ms/step - loss: 0.0922 - accuracy: 0.9724 - val_loss: 0.1882 - val_accuracy: 0.9510 - lr: 4.9787e-05
94/94 [==============================] - 0s 3ms/step - loss: 0.1818 - accuracy: 0.9507
CNN Error: 4.93%

Final 31 by 31 Model¶

In [124]:
# Model 2
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<70:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
callback = LearningRateScheduler(scheduleLR)
history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=100, batch_size=128,callbacks=[callback])
model.save_weights("./Best Model Weights/bestCNN31by31.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/100
71/71 [==============================] - 2s 15ms/step - loss: 2.6146 - accuracy: 0.1058 - val_loss: 2.6575 - val_accuracy: 0.0987 - lr: 0.0010
Epoch 2/100
71/71 [==============================] - 1s 12ms/step - loss: 2.5163 - accuracy: 0.1444 - val_loss: 2.5330 - val_accuracy: 0.1337 - lr: 0.0010
Epoch 3/100
71/71 [==============================] - 1s 11ms/step - loss: 2.3924 - accuracy: 0.1962 - val_loss: 2.3014 - val_accuracy: 0.2720 - lr: 0.0010
Epoch 4/100
71/71 [==============================] - 1s 12ms/step - loss: 2.1782 - accuracy: 0.2807 - val_loss: 2.1067 - val_accuracy: 0.2893 - lr: 0.0010
Epoch 5/100
71/71 [==============================] - 1s 12ms/step - loss: 2.0218 - accuracy: 0.3438 - val_loss: 1.8833 - val_accuracy: 0.3743 - lr: 0.0010
Epoch 6/100
71/71 [==============================] - 1s 11ms/step - loss: 1.9019 - accuracy: 0.3833 - val_loss: 1.7824 - val_accuracy: 0.4147 - lr: 0.0010
Epoch 7/100
71/71 [==============================] - 1s 12ms/step - loss: 1.7478 - accuracy: 0.4383 - val_loss: 1.7592 - val_accuracy: 0.4267 - lr: 0.0010
Epoch 8/100
71/71 [==============================] - 1s 12ms/step - loss: 1.6187 - accuracy: 0.4785 - val_loss: 1.6128 - val_accuracy: 0.4927 - lr: 0.0010
Epoch 9/100
71/71 [==============================] - 1s 12ms/step - loss: 1.4995 - accuracy: 0.5261 - val_loss: 1.4691 - val_accuracy: 0.5163 - lr: 0.0010
Epoch 10/100
71/71 [==============================] - 1s 12ms/step - loss: 1.4261 - accuracy: 0.5441 - val_loss: 1.3118 - val_accuracy: 0.5877 - lr: 0.0010
Epoch 11/100
71/71 [==============================] - 1s 11ms/step - loss: 1.3230 - accuracy: 0.5757 - val_loss: 1.1571 - val_accuracy: 0.6320 - lr: 0.0010
Epoch 12/100
71/71 [==============================] - 1s 11ms/step - loss: 1.2334 - accuracy: 0.6077 - val_loss: 1.4318 - val_accuracy: 0.5467 - lr: 0.0010
Epoch 13/100
71/71 [==============================] - 1s 11ms/step - loss: 1.1584 - accuracy: 0.6352 - val_loss: 1.1460 - val_accuracy: 0.6340 - lr: 0.0010
Epoch 14/100
71/71 [==============================] - 1s 12ms/step - loss: 1.0977 - accuracy: 0.6534 - val_loss: 1.0781 - val_accuracy: 0.6467 - lr: 0.0010
Epoch 15/100
71/71 [==============================] - 1s 11ms/step - loss: 1.0370 - accuracy: 0.6748 - val_loss: 1.0538 - val_accuracy: 0.6677 - lr: 0.0010
Epoch 16/100
71/71 [==============================] - 1s 11ms/step - loss: 0.9469 - accuracy: 0.7000 - val_loss: 0.8536 - val_accuracy: 0.7270 - lr: 0.0010
Epoch 17/100
71/71 [==============================] - 1s 12ms/step - loss: 0.9029 - accuracy: 0.7158 - val_loss: 0.7054 - val_accuracy: 0.7847 - lr: 0.0010
Epoch 18/100
71/71 [==============================] - 1s 12ms/step - loss: 0.8704 - accuracy: 0.7220 - val_loss: 0.7518 - val_accuracy: 0.7713 - lr: 0.0010
Epoch 19/100
71/71 [==============================] - 1s 12ms/step - loss: 0.8214 - accuracy: 0.7428 - val_loss: 0.7206 - val_accuracy: 0.7940 - lr: 0.0010
Epoch 20/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7731 - accuracy: 0.7543 - val_loss: 0.7182 - val_accuracy: 0.7750 - lr: 0.0010
Epoch 21/100
71/71 [==============================] - 1s 11ms/step - loss: 0.7547 - accuracy: 0.7655 - val_loss: 0.5698 - val_accuracy: 0.8260 - lr: 0.0010
Epoch 22/100
71/71 [==============================] - 1s 12ms/step - loss: 0.6877 - accuracy: 0.7823 - val_loss: 0.6482 - val_accuracy: 0.8053 - lr: 0.0010
Epoch 23/100
71/71 [==============================] - 1s 12ms/step - loss: 0.6656 - accuracy: 0.7857 - val_loss: 0.5407 - val_accuracy: 0.8363 - lr: 0.0010
Epoch 24/100
71/71 [==============================] - 1s 12ms/step - loss: 0.6586 - accuracy: 0.7984 - val_loss: 0.5658 - val_accuracy: 0.8273 - lr: 0.0010
Epoch 25/100
71/71 [==============================] - 1s 12ms/step - loss: 0.6042 - accuracy: 0.8126 - val_loss: 0.6059 - val_accuracy: 0.8067 - lr: 0.0010
Epoch 26/100
71/71 [==============================] - 1s 12ms/step - loss: 0.5818 - accuracy: 0.8189 - val_loss: 0.4874 - val_accuracy: 0.8480 - lr: 0.0010
Epoch 27/100
71/71 [==============================] - 1s 12ms/step - loss: 0.5622 - accuracy: 0.8229 - val_loss: 0.4335 - val_accuracy: 0.8677 - lr: 0.0010
Epoch 28/100
71/71 [==============================] - 1s 11ms/step - loss: 0.5168 - accuracy: 0.8378 - val_loss: 0.5520 - val_accuracy: 0.8293 - lr: 0.0010
Epoch 29/100
71/71 [==============================] - 1s 12ms/step - loss: 0.5273 - accuracy: 0.8348 - val_loss: 0.3741 - val_accuracy: 0.8867 - lr: 0.0010
Epoch 30/100
71/71 [==============================] - 1s 12ms/step - loss: 0.5125 - accuracy: 0.8398 - val_loss: 0.3988 - val_accuracy: 0.8793 - lr: 0.0010
Epoch 31/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4695 - accuracy: 0.8527 - val_loss: 0.5779 - val_accuracy: 0.8307 - lr: 0.0010
Epoch 32/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4863 - accuracy: 0.8545 - val_loss: 0.4150 - val_accuracy: 0.8750 - lr: 0.0010
Epoch 33/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4432 - accuracy: 0.8626 - val_loss: 0.3420 - val_accuracy: 0.8963 - lr: 0.0010
Epoch 34/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4420 - accuracy: 0.8605 - val_loss: 0.3685 - val_accuracy: 0.8883 - lr: 0.0010
Epoch 35/100
71/71 [==============================] - 1s 12ms/step - loss: 0.4274 - accuracy: 0.8656 - val_loss: 0.3523 - val_accuracy: 0.8980 - lr: 0.0010
Epoch 36/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4231 - accuracy: 0.8694 - val_loss: 0.4242 - val_accuracy: 0.8810 - lr: 0.0010
Epoch 37/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4174 - accuracy: 0.8683 - val_loss: 0.3094 - val_accuracy: 0.9073 - lr: 0.0010
Epoch 38/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3841 - accuracy: 0.8806 - val_loss: 0.3384 - val_accuracy: 0.8947 - lr: 0.0010
Epoch 39/100
71/71 [==============================] - 1s 11ms/step - loss: 0.4044 - accuracy: 0.8769 - val_loss: 0.3749 - val_accuracy: 0.8923 - lr: 0.0010
Epoch 40/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3605 - accuracy: 0.8858 - val_loss: 0.2837 - val_accuracy: 0.9173 - lr: 0.0010
Epoch 41/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3603 - accuracy: 0.8849 - val_loss: 0.4752 - val_accuracy: 0.8653 - lr: 0.0010
Epoch 42/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3581 - accuracy: 0.8880 - val_loss: 0.3595 - val_accuracy: 0.8923 - lr: 0.0010
Epoch 43/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3468 - accuracy: 0.8984 - val_loss: 0.2862 - val_accuracy: 0.9210 - lr: 0.0010
Epoch 44/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3369 - accuracy: 0.8962 - val_loss: 0.3074 - val_accuracy: 0.9163 - lr: 0.0010
Epoch 45/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3181 - accuracy: 0.9042 - val_loss: 0.4118 - val_accuracy: 0.8777 - lr: 0.0010
Epoch 46/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3259 - accuracy: 0.9008 - val_loss: 0.2826 - val_accuracy: 0.9167 - lr: 0.0010
Epoch 47/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3254 - accuracy: 0.9004 - val_loss: 0.2988 - val_accuracy: 0.9117 - lr: 0.0010
Epoch 48/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3228 - accuracy: 0.9010 - val_loss: 0.2823 - val_accuracy: 0.9180 - lr: 0.0010
Epoch 49/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3060 - accuracy: 0.9052 - val_loss: 0.3049 - val_accuracy: 0.9063 - lr: 0.0010
Epoch 50/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3134 - accuracy: 0.9045 - val_loss: 0.2886 - val_accuracy: 0.9140 - lr: 0.0010
Epoch 51/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3073 - accuracy: 0.9075 - val_loss: 0.3366 - val_accuracy: 0.9033 - lr: 0.0010
Epoch 52/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3027 - accuracy: 0.9058 - val_loss: 0.2482 - val_accuracy: 0.9317 - lr: 0.0010
Epoch 53/100
71/71 [==============================] - 1s 11ms/step - loss: 0.3083 - accuracy: 0.9074 - val_loss: 0.3045 - val_accuracy: 0.9223 - lr: 0.0010
Epoch 54/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2706 - accuracy: 0.9149 - val_loss: 0.2880 - val_accuracy: 0.9240 - lr: 0.0010
Epoch 55/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2965 - accuracy: 0.9093 - val_loss: 0.2367 - val_accuracy: 0.9380 - lr: 0.0010
Epoch 56/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2923 - accuracy: 0.9098 - val_loss: 0.2823 - val_accuracy: 0.9187 - lr: 0.0010
Epoch 57/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2841 - accuracy: 0.9119 - val_loss: 0.2983 - val_accuracy: 0.9113 - lr: 0.0010
Epoch 58/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2753 - accuracy: 0.9196 - val_loss: 0.2570 - val_accuracy: 0.9287 - lr: 0.0010
Epoch 59/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2752 - accuracy: 0.9169 - val_loss: 0.2839 - val_accuracy: 0.9227 - lr: 0.0010
Epoch 60/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2793 - accuracy: 0.9150 - val_loss: 0.3255 - val_accuracy: 0.9093 - lr: 0.0010
Epoch 61/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2578 - accuracy: 0.9247 - val_loss: 0.2240 - val_accuracy: 0.9377 - lr: 0.0010
Epoch 62/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2531 - accuracy: 0.9210 - val_loss: 0.2783 - val_accuracy: 0.9227 - lr: 0.0010
Epoch 63/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2406 - accuracy: 0.9303 - val_loss: 0.2423 - val_accuracy: 0.9350 - lr: 0.0010
Epoch 64/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2585 - accuracy: 0.9255 - val_loss: 0.2468 - val_accuracy: 0.9297 - lr: 0.0010
Epoch 65/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2695 - accuracy: 0.9196 - val_loss: 0.2146 - val_accuracy: 0.9367 - lr: 0.0010
Epoch 66/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2667 - accuracy: 0.9242 - val_loss: 0.3162 - val_accuracy: 0.9123 - lr: 0.0010
Epoch 67/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2466 - accuracy: 0.9284 - val_loss: 0.2649 - val_accuracy: 0.9293 - lr: 0.0010
Epoch 68/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2528 - accuracy: 0.9279 - val_loss: 0.3660 - val_accuracy: 0.8987 - lr: 0.0010
Epoch 69/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2545 - accuracy: 0.9242 - val_loss: 0.4681 - val_accuracy: 0.8687 - lr: 0.0010
Epoch 70/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2533 - accuracy: 0.9266 - val_loss: 0.2380 - val_accuracy: 0.9343 - lr: 0.0010
Epoch 71/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2428 - accuracy: 0.9327 - val_loss: 0.2419 - val_accuracy: 0.9330 - lr: 9.0484e-04
Epoch 72/100
71/71 [==============================] - 1s 12ms/step - loss: 0.2106 - accuracy: 0.9412 - val_loss: 0.2199 - val_accuracy: 0.9413 - lr: 8.1873e-04
Epoch 73/100
71/71 [==============================] - 1s 11ms/step - loss: 0.2040 - accuracy: 0.9415 - val_loss: 0.2772 - val_accuracy: 0.9220 - lr: 7.4082e-04
Epoch 74/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1950 - accuracy: 0.9424 - val_loss: 0.1999 - val_accuracy: 0.9500 - lr: 6.7032e-04
Epoch 75/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1879 - accuracy: 0.9455 - val_loss: 0.2045 - val_accuracy: 0.9443 - lr: 6.0653e-04
Epoch 76/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1721 - accuracy: 0.9489 - val_loss: 0.2729 - val_accuracy: 0.9273 - lr: 5.4881e-04
Epoch 77/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1691 - accuracy: 0.9490 - val_loss: 0.2088 - val_accuracy: 0.9463 - lr: 4.9659e-04
Epoch 78/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1532 - accuracy: 0.9531 - val_loss: 0.2047 - val_accuracy: 0.9470 - lr: 4.4933e-04
Epoch 79/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1480 - accuracy: 0.9578 - val_loss: 0.2048 - val_accuracy: 0.9447 - lr: 4.0657e-04
Epoch 80/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1416 - accuracy: 0.9598 - val_loss: 0.2044 - val_accuracy: 0.9490 - lr: 3.6788e-04
Epoch 81/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1570 - accuracy: 0.9545 - val_loss: 0.2126 - val_accuracy: 0.9460 - lr: 3.3287e-04
Epoch 82/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1324 - accuracy: 0.9584 - val_loss: 0.1763 - val_accuracy: 0.9523 - lr: 3.0119e-04
Epoch 83/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1261 - accuracy: 0.9620 - val_loss: 0.1908 - val_accuracy: 0.9503 - lr: 2.7253e-04
Epoch 84/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1154 - accuracy: 0.9654 - val_loss: 0.1892 - val_accuracy: 0.9543 - lr: 2.4660e-04
Epoch 85/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1183 - accuracy: 0.9678 - val_loss: 0.1915 - val_accuracy: 0.9493 - lr: 2.2313e-04
Epoch 86/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1166 - accuracy: 0.9682 - val_loss: 0.1827 - val_accuracy: 0.9510 - lr: 2.0190e-04
Epoch 87/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1254 - accuracy: 0.9611 - val_loss: 0.1785 - val_accuracy: 0.9540 - lr: 1.8268e-04
Epoch 88/100
71/71 [==============================] - 1s 12ms/step - loss: 0.1216 - accuracy: 0.9657 - val_loss: 0.1845 - val_accuracy: 0.9507 - lr: 1.6530e-04
Epoch 89/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1183 - accuracy: 0.9668 - val_loss: 0.1805 - val_accuracy: 0.9537 - lr: 1.4957e-04
Epoch 90/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1203 - accuracy: 0.9637 - val_loss: 0.1816 - val_accuracy: 0.9523 - lr: 1.3534e-04
Epoch 91/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1023 - accuracy: 0.9661 - val_loss: 0.1810 - val_accuracy: 0.9530 - lr: 1.2246e-04
Epoch 92/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1173 - accuracy: 0.9654 - val_loss: 0.1853 - val_accuracy: 0.9540 - lr: 1.1080e-04
Epoch 93/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1011 - accuracy: 0.9672 - val_loss: 0.1871 - val_accuracy: 0.9520 - lr: 1.0026e-04
Epoch 94/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1115 - accuracy: 0.9675 - val_loss: 0.1839 - val_accuracy: 0.9513 - lr: 9.0718e-05
Epoch 95/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1131 - accuracy: 0.9662 - val_loss: 0.1779 - val_accuracy: 0.9550 - lr: 8.2085e-05
Epoch 96/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1011 - accuracy: 0.9683 - val_loss: 0.1843 - val_accuracy: 0.9523 - lr: 7.4273e-05
Epoch 97/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1115 - accuracy: 0.9673 - val_loss: 0.1781 - val_accuracy: 0.9543 - lr: 6.7205e-05
Epoch 98/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1193 - accuracy: 0.9660 - val_loss: 0.1801 - val_accuracy: 0.9520 - lr: 6.0810e-05
Epoch 99/100
71/71 [==============================] - 1s 11ms/step - loss: 0.0969 - accuracy: 0.9742 - val_loss: 0.1772 - val_accuracy: 0.9563 - lr: 5.5023e-05
Epoch 100/100
71/71 [==============================] - 1s 11ms/step - loss: 0.1023 - accuracy: 0.9708 - val_loss: 0.1799 - val_accuracy: 0.9530 - lr: 4.9787e-05
94/94 [==============================] - 0s 4ms/step - loss: 0.1748 - accuracy: 0.9557
CNN Error: 4.43%
In [3]:
model.summary()
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d (Conv2D)             (None, 29, 29, 64)        640       
                                                                 
 max_pooling2d (MaxPooling2D  (None, 14, 14, 64)       0         
 )                                                               
                                                                 
 dropout (Dropout)           (None, 14, 14, 64)        0         
                                                                 
 conv2d_1 (Conv2D)           (None, 12, 12, 128)       73856     
                                                                 
 max_pooling2d_1 (MaxPooling  (None, 6, 6, 128)        0         
 2D)                                                             
                                                                 
 dropout_1 (Dropout)         (None, 6, 6, 128)         0         
                                                                 
 conv2d_2 (Conv2D)           (None, 4, 4, 256)         295168    
                                                                 
 max_pooling2d_2 (MaxPooling  (None, 2, 2, 256)        0         
 2D)                                                             
                                                                 
 dropout_2 (Dropout)         (None, 2, 2, 256)         0         
                                                                 
 flatten (Flatten)           (None, 1024)              0         
                                                                 
 dense (Dense)               (None, 512)               524800    
                                                                 
 dropout_3 (Dropout)         (None, 512)               0         
                                                                 
 dense_1 (Dense)             (None, 256)               131328    
                                                                 
 dropout_4 (Dropout)         (None, 256)               0         
                                                                 
 dense_2 (Dense)             (None, 15)                3855      
                                                                 
=================================================================
Total params: 1,029,647
Trainable params: 1,029,647
Non-trainable params: 0
_________________________________________________________________
In [3]:
# pip install pydot
# pip install graphviz
# conda install graphviz
# Restart kernal after installation
plot_model(model,show_shapes=True,show_layer_names=True)
Out[3]:

Load Best 31 by 31 Model¶

In [2]:
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<70:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(31,31,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))


model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
callback = LearningRateScheduler(scheduleLR)
model.load_weights("./Best Model Weights/bestCNN31by31.h5")

Loading Dataset For 128 by 128¶

In [21]:
train = image_dataset_from_directory(directory='./Dataset for CA1 part A/train',color_mode='grayscale',label_mode='categorical',image_size=(128,128))
test = image_dataset_from_directory(directory='./Dataset for CA1 part A/test',color_mode='grayscale',label_mode='categorical',image_size=(128,128))
validation = image_dataset_from_directory(directory='./Dataset for CA1 part A/validation',color_mode='grayscale',label_mode='categorical',image_size=(128,128))
Found 9028 files belonging to 15 classes.
Found 3000 files belonging to 15 classes.
Found 3000 files belonging to 15 classes.
In [22]:
X_train = []
y_train = []

for images, labels in train:
    X_train.append(images)
    y_train.append(labels)

X_train = np.concatenate(X_train, axis=0)
X_train = np.squeeze(X_train, axis=-1)
y_train = np.concatenate(y_train, axis=0)
In [23]:
X_test = []
y_test = []

for images, labels in test:
    X_test.append(images)
    y_test.append(labels)

X_test = np.concatenate(X_test, axis=0)
X_test = np.squeeze(X_test, axis=-1)
y_test = np.concatenate(y_test, axis=0)
In [24]:
X_val = []
y_val = []

for images, labels in validation:
    X_val.append(images)
    y_val.append(labels)

X_val = np.concatenate(X_val, axis=0)
X_val = np.squeeze(X_val, axis=-1)
y_val = np.concatenate(y_val, axis=0)
In [25]:
from tensorflow.keras.utils import to_categorical
X_train = np.array(X_train) / 255.0
X_test = np.array(X_test) / 255.0
X_val = np.array(X_val) / 255.0

Model 1 (128 x 128)¶

An extra layer is introduced because the image dimension has increased¶

In [131]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 6s 34ms/step - loss: 2.3624 - accuracy: 0.2156 - val_loss: 1.8927 - val_accuracy: 0.4043
Epoch 2/50
142/142 [==============================] - 4s 30ms/step - loss: 1.6628 - accuracy: 0.4755 - val_loss: 1.4251 - val_accuracy: 0.5423
Epoch 3/50
142/142 [==============================] - 4s 29ms/step - loss: 1.2266 - accuracy: 0.6117 - val_loss: 1.1254 - val_accuracy: 0.6463
Epoch 4/50
142/142 [==============================] - 4s 28ms/step - loss: 0.8580 - accuracy: 0.7272 - val_loss: 0.6950 - val_accuracy: 0.7840
Epoch 5/50
142/142 [==============================] - 4s 29ms/step - loss: 0.6612 - accuracy: 0.7892 - val_loss: 0.5919 - val_accuracy: 0.8140
Epoch 6/50
142/142 [==============================] - 4s 28ms/step - loss: 0.4767 - accuracy: 0.8477 - val_loss: 0.5688 - val_accuracy: 0.8267
Epoch 7/50
142/142 [==============================] - 4s 28ms/step - loss: 0.3740 - accuracy: 0.8827 - val_loss: 0.5666 - val_accuracy: 0.8313
Epoch 8/50
142/142 [==============================] - 4s 28ms/step - loss: 0.3104 - accuracy: 0.8972 - val_loss: 0.5108 - val_accuracy: 0.8537
Epoch 9/50
142/142 [==============================] - 4s 28ms/step - loss: 0.2428 - accuracy: 0.9241 - val_loss: 0.5938 - val_accuracy: 0.8303
Epoch 10/50
142/142 [==============================] - 4s 28ms/step - loss: 0.1860 - accuracy: 0.9389 - val_loss: 0.5248 - val_accuracy: 0.8680
Epoch 11/50
142/142 [==============================] - 4s 28ms/step - loss: 0.1900 - accuracy: 0.9379 - val_loss: 0.4957 - val_accuracy: 0.8710
Epoch 12/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1554 - accuracy: 0.9507 - val_loss: 0.4915 - val_accuracy: 0.8723
Epoch 13/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1162 - accuracy: 0.9631 - val_loss: 0.4392 - val_accuracy: 0.8910
Epoch 14/50
142/142 [==============================] - 4s 30ms/step - loss: 0.1280 - accuracy: 0.9598 - val_loss: 0.4295 - val_accuracy: 0.8933
Epoch 15/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1058 - accuracy: 0.9680 - val_loss: 0.4414 - val_accuracy: 0.8887
Epoch 16/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0992 - accuracy: 0.9683 - val_loss: 0.6128 - val_accuracy: 0.8610
Epoch 17/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1592 - accuracy: 0.9512 - val_loss: 0.5056 - val_accuracy: 0.8790
Epoch 18/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0895 - accuracy: 0.9721 - val_loss: 0.9852 - val_accuracy: 0.7760
Epoch 19/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1948 - accuracy: 0.9477 - val_loss: 0.5561 - val_accuracy: 0.8663
Epoch 20/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0793 - accuracy: 0.9762 - val_loss: 0.5009 - val_accuracy: 0.8820
Epoch 21/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0737 - accuracy: 0.9766 - val_loss: 0.4845 - val_accuracy: 0.8923
Epoch 22/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0669 - accuracy: 0.9788 - val_loss: 0.5193 - val_accuracy: 0.8823
Epoch 23/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0506 - accuracy: 0.9819 - val_loss: 0.5128 - val_accuracy: 0.8860
Epoch 24/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0547 - accuracy: 0.9826 - val_loss: 0.5216 - val_accuracy: 0.8880
Epoch 25/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1292 - accuracy: 0.9650 - val_loss: 0.6556 - val_accuracy: 0.8657
Epoch 26/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0616 - accuracy: 0.9818 - val_loss: 0.4346 - val_accuracy: 0.8973
Epoch 27/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0511 - accuracy: 0.9849 - val_loss: 0.4672 - val_accuracy: 0.9020
Epoch 28/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0526 - accuracy: 0.9834 - val_loss: 0.5958 - val_accuracy: 0.8760
Epoch 29/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0577 - accuracy: 0.9815 - val_loss: 0.4695 - val_accuracy: 0.8977
Epoch 30/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0596 - accuracy: 0.9817 - val_loss: 0.5126 - val_accuracy: 0.8817
Epoch 31/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0488 - accuracy: 0.9834 - val_loss: 0.5277 - val_accuracy: 0.8867
Epoch 32/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0404 - accuracy: 0.9868 - val_loss: 0.4987 - val_accuracy: 0.8913
Epoch 33/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0466 - accuracy: 0.9856 - val_loss: 0.4958 - val_accuracy: 0.8937
Epoch 34/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0431 - accuracy: 0.9856 - val_loss: 0.5641 - val_accuracy: 0.8890
Epoch 35/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0544 - accuracy: 0.9824 - val_loss: 0.5487 - val_accuracy: 0.8810
Epoch 36/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0480 - accuracy: 0.9847 - val_loss: 0.5366 - val_accuracy: 0.8897
Epoch 37/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0585 - accuracy: 0.9813 - val_loss: 0.5506 - val_accuracy: 0.8907
Epoch 38/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0382 - accuracy: 0.9874 - val_loss: 0.7103 - val_accuracy: 0.8603
Epoch 39/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0481 - accuracy: 0.9849 - val_loss: 0.4839 - val_accuracy: 0.8930
Epoch 40/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0588 - accuracy: 0.9822 - val_loss: 0.6705 - val_accuracy: 0.8510
Epoch 41/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0882 - accuracy: 0.9745 - val_loss: 0.4858 - val_accuracy: 0.8930
Epoch 42/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0335 - accuracy: 0.9901 - val_loss: 0.6641 - val_accuracy: 0.8720
Epoch 43/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0474 - accuracy: 0.9866 - val_loss: 0.5089 - val_accuracy: 0.8850
Epoch 44/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0385 - accuracy: 0.9881 - val_loss: 0.5323 - val_accuracy: 0.8930
Epoch 45/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0240 - accuracy: 0.9919 - val_loss: 0.5133 - val_accuracy: 0.8990
Epoch 46/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0362 - accuracy: 0.9898 - val_loss: 0.6385 - val_accuracy: 0.8793
Epoch 47/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0367 - accuracy: 0.9888 - val_loss: 0.5206 - val_accuracy: 0.8923
Epoch 48/50
142/142 [==============================] - 4s 30ms/step - loss: 0.0423 - accuracy: 0.9860 - val_loss: 0.7198 - val_accuracy: 0.8567
Epoch 49/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0490 - accuracy: 0.9867 - val_loss: 0.5313 - val_accuracy: 0.8850
Epoch 50/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0217 - accuracy: 0.9924 - val_loss: 0.5012 - val_accuracy: 0.8983
94/94 [==============================] - 1s 7ms/step - loss: 0.4580 - accuracy: 0.9020
CNN Error: 9.80%

More dropouts were added to curb overfitting¶

In [132]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)
model.save_weights("./CNN Weights (128 by 128)/model1.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 6s 35ms/step - loss: 2.4164 - accuracy: 0.1920 - val_loss: 2.2991 - val_accuracy: 0.2320
Epoch 2/50
142/142 [==============================] - 5s 32ms/step - loss: 1.8160 - accuracy: 0.4199 - val_loss: 1.8964 - val_accuracy: 0.3943
Epoch 3/50
142/142 [==============================] - 5s 32ms/step - loss: 1.4235 - accuracy: 0.5450 - val_loss: 1.5455 - val_accuracy: 0.5043
Epoch 4/50
142/142 [==============================] - 4s 32ms/step - loss: 1.1464 - accuracy: 0.6360 - val_loss: 1.2748 - val_accuracy: 0.5870
Epoch 5/50
142/142 [==============================] - 4s 31ms/step - loss: 0.9815 - accuracy: 0.6880 - val_loss: 0.8430 - val_accuracy: 0.7347
Epoch 6/50
142/142 [==============================] - 4s 31ms/step - loss: 0.7785 - accuracy: 0.7528 - val_loss: 1.0649 - val_accuracy: 0.6780
Epoch 7/50
142/142 [==============================] - 4s 31ms/step - loss: 0.6374 - accuracy: 0.8002 - val_loss: 0.6060 - val_accuracy: 0.8113
Epoch 8/50
142/142 [==============================] - 4s 31ms/step - loss: 0.5065 - accuracy: 0.8378 - val_loss: 0.6732 - val_accuracy: 0.7930
Epoch 9/50
142/142 [==============================] - 4s 31ms/step - loss: 0.4571 - accuracy: 0.8526 - val_loss: 0.6119 - val_accuracy: 0.8177
Epoch 10/50
142/142 [==============================] - 4s 31ms/step - loss: 0.3795 - accuracy: 0.8774 - val_loss: 0.4841 - val_accuracy: 0.8577
Epoch 11/50
142/142 [==============================] - 4s 31ms/step - loss: 0.3437 - accuracy: 0.8882 - val_loss: 0.5174 - val_accuracy: 0.8467
Epoch 12/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2804 - accuracy: 0.9077 - val_loss: 0.5476 - val_accuracy: 0.8573
Epoch 13/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2634 - accuracy: 0.9161 - val_loss: 0.5231 - val_accuracy: 0.8573
Epoch 14/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2584 - accuracy: 0.9181 - val_loss: 0.4182 - val_accuracy: 0.8840
Epoch 15/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2356 - accuracy: 0.9204 - val_loss: 0.4578 - val_accuracy: 0.8667
Epoch 16/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1999 - accuracy: 0.9339 - val_loss: 0.5060 - val_accuracy: 0.8707
Epoch 17/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2900 - accuracy: 0.9105 - val_loss: 0.4242 - val_accuracy: 0.8853
Epoch 18/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1593 - accuracy: 0.9473 - val_loss: 0.4583 - val_accuracy: 0.8830
Epoch 19/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1451 - accuracy: 0.9540 - val_loss: 0.7730 - val_accuracy: 0.8037
Epoch 20/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2075 - accuracy: 0.9379 - val_loss: 0.4761 - val_accuracy: 0.8780
Epoch 21/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1495 - accuracy: 0.9518 - val_loss: 0.4265 - val_accuracy: 0.8890
Epoch 22/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1265 - accuracy: 0.9572 - val_loss: 0.4539 - val_accuracy: 0.8897
Epoch 23/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1174 - accuracy: 0.9607 - val_loss: 0.4467 - val_accuracy: 0.8850
Epoch 24/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1152 - accuracy: 0.9625 - val_loss: 0.4934 - val_accuracy: 0.8793
Epoch 25/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1071 - accuracy: 0.9667 - val_loss: 0.3971 - val_accuracy: 0.9017
Epoch 26/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1151 - accuracy: 0.9622 - val_loss: 0.4564 - val_accuracy: 0.8853
Epoch 27/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0969 - accuracy: 0.9690 - val_loss: 0.4381 - val_accuracy: 0.8943
Epoch 28/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1027 - accuracy: 0.9678 - val_loss: 0.4942 - val_accuracy: 0.8893
Epoch 29/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1145 - accuracy: 0.9653 - val_loss: 0.4650 - val_accuracy: 0.8893
Epoch 30/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0956 - accuracy: 0.9685 - val_loss: 0.5519 - val_accuracy: 0.8740
Epoch 31/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0925 - accuracy: 0.9711 - val_loss: 0.4599 - val_accuracy: 0.8883
Epoch 32/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1349 - accuracy: 0.9596 - val_loss: 0.4008 - val_accuracy: 0.9017
Epoch 33/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0774 - accuracy: 0.9761 - val_loss: 0.4608 - val_accuracy: 0.8963
Epoch 34/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1262 - accuracy: 0.9601 - val_loss: 0.4403 - val_accuracy: 0.8913
Epoch 35/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0719 - accuracy: 0.9770 - val_loss: 0.5952 - val_accuracy: 0.8620
Epoch 36/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0777 - accuracy: 0.9773 - val_loss: 0.5261 - val_accuracy: 0.8830
Epoch 37/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0792 - accuracy: 0.9773 - val_loss: 0.4174 - val_accuracy: 0.8983
Epoch 38/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0761 - accuracy: 0.9751 - val_loss: 0.4185 - val_accuracy: 0.9063
Epoch 39/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0803 - accuracy: 0.9749 - val_loss: 0.4233 - val_accuracy: 0.9040
Epoch 40/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0758 - accuracy: 0.9763 - val_loss: 0.4747 - val_accuracy: 0.8957
Epoch 41/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0540 - accuracy: 0.9814 - val_loss: 0.4464 - val_accuracy: 0.9037
Epoch 42/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0661 - accuracy: 0.9793 - val_loss: 0.4791 - val_accuracy: 0.8930
Epoch 43/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0803 - accuracy: 0.9757 - val_loss: 0.5310 - val_accuracy: 0.8767
Epoch 44/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0980 - accuracy: 0.9691 - val_loss: 0.4697 - val_accuracy: 0.8860
Epoch 45/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0717 - accuracy: 0.9774 - val_loss: 0.4853 - val_accuracy: 0.8867
Epoch 46/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0898 - accuracy: 0.9726 - val_loss: 0.5058 - val_accuracy: 0.8807
Epoch 47/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0673 - accuracy: 0.9803 - val_loss: 0.5044 - val_accuracy: 0.8887
Epoch 48/50
142/142 [==============================] - 4s 32ms/step - loss: 0.0581 - accuracy: 0.9826 - val_loss: 0.5172 - val_accuracy: 0.8803
Epoch 49/50
142/142 [==============================] - 5s 33ms/step - loss: 0.2105 - accuracy: 0.9453 - val_loss: 0.4100 - val_accuracy: 0.8957
Epoch 50/50
142/142 [==============================] - 5s 33ms/step - loss: 0.0561 - accuracy: 0.9823 - val_loss: 0.4047 - val_accuracy: 0.9050
94/94 [==============================] - 1s 6ms/step - loss: 0.4274 - accuracy: 0.9017
CNN Error: 9.83%
In [133]:
model.summary()
Model: "sequential_84"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d_250 (Conv2D)         (None, 126, 126, 32)      320       
                                                                 
 max_pooling2d_236 (MaxPooli  (None, 63, 63, 32)       0         
 ng2D)                                                           
                                                                 
 dropout_339 (Dropout)       (None, 63, 63, 32)        0         
                                                                 
 conv2d_251 (Conv2D)         (None, 61, 61, 64)        18496     
                                                                 
 max_pooling2d_237 (MaxPooli  (None, 30, 30, 64)       0         
 ng2D)                                                           
                                                                 
 dropout_340 (Dropout)       (None, 30, 30, 64)        0         
                                                                 
 conv2d_252 (Conv2D)         (None, 28, 28, 128)       73856     
                                                                 
 max_pooling2d_238 (MaxPooli  (None, 14, 14, 128)      0         
 ng2D)                                                           
                                                                 
 dropout_341 (Dropout)       (None, 14, 14, 128)       0         
                                                                 
 flatten_78 (Flatten)        (None, 25088)             0         
                                                                 
 dense_237 (Dense)           (None, 256)               6422784   
                                                                 
 dropout_342 (Dropout)       (None, 256)               0         
                                                                 
 dense_238 (Dense)           (None, 128)               32896     
                                                                 
 dropout_343 (Dropout)       (None, 128)               0         
                                                                 
 dense_239 (Dense)           (None, 15)                1935      
                                                                 
=================================================================
Total params: 6,550,287
Trainable params: 6,550,287
Non-trainable params: 0
_________________________________________________________________

Load Model 1 (128 x 128)¶

In [134]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.load_weights("./CNN Weights (128 by 128)/model1.h5")

Model 2 (128 x 128)¶

In [10]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 9s 60ms/step - loss: 2.2314 - accuracy: 0.2613 - val_loss: 2.0446 - val_accuracy: 0.3410
Epoch 2/50
142/142 [==============================] - 8s 57ms/step - loss: 1.4793 - accuracy: 0.5299 - val_loss: 1.1031 - val_accuracy: 0.6567
Epoch 3/50
142/142 [==============================] - 8s 56ms/step - loss: 0.9449 - accuracy: 0.6947 - val_loss: 0.8699 - val_accuracy: 0.7207
Epoch 4/50
142/142 [==============================] - 8s 55ms/step - loss: 0.6310 - accuracy: 0.8000 - val_loss: 0.6473 - val_accuracy: 0.8017
Epoch 5/50
142/142 [==============================] - 8s 55ms/step - loss: 0.3991 - accuracy: 0.8714 - val_loss: 0.4979 - val_accuracy: 0.8537
Epoch 6/50
142/142 [==============================] - 8s 55ms/step - loss: 0.2803 - accuracy: 0.9098 - val_loss: 0.4413 - val_accuracy: 0.8687
Epoch 7/50
142/142 [==============================] - 8s 55ms/step - loss: 0.1943 - accuracy: 0.9392 - val_loss: 0.5473 - val_accuracy: 0.8510
Epoch 8/50
142/142 [==============================] - 8s 55ms/step - loss: 0.1665 - accuracy: 0.9457 - val_loss: 0.4834 - val_accuracy: 0.8660
Epoch 9/50
142/142 [==============================] - 8s 56ms/step - loss: 0.1165 - accuracy: 0.9612 - val_loss: 0.4314 - val_accuracy: 0.8917
Epoch 10/50
142/142 [==============================] - 8s 56ms/step - loss: 0.0980 - accuracy: 0.9680 - val_loss: 0.4314 - val_accuracy: 0.8873
Epoch 11/50
142/142 [==============================] - 8s 56ms/step - loss: 0.0891 - accuracy: 0.9719 - val_loss: 0.6832 - val_accuracy: 0.8493
Epoch 12/50
142/142 [==============================] - 8s 56ms/step - loss: 0.0910 - accuracy: 0.9723 - val_loss: 0.5793 - val_accuracy: 0.8673
Epoch 13/50
142/142 [==============================] - 8s 56ms/step - loss: 0.1338 - accuracy: 0.9616 - val_loss: 0.4721 - val_accuracy: 0.8877
Epoch 14/50
142/142 [==============================] - 8s 56ms/step - loss: 0.0629 - accuracy: 0.9809 - val_loss: 0.6164 - val_accuracy: 0.8583
Epoch 15/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0454 - accuracy: 0.9860 - val_loss: 0.4971 - val_accuracy: 0.8900
Epoch 16/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0339 - accuracy: 0.9887 - val_loss: 0.6623 - val_accuracy: 0.8623
Epoch 17/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0531 - accuracy: 0.9822 - val_loss: 0.4765 - val_accuracy: 0.8927
Epoch 18/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0444 - accuracy: 0.9859 - val_loss: 0.5048 - val_accuracy: 0.8870
Epoch 19/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0404 - accuracy: 0.9860 - val_loss: 0.4999 - val_accuracy: 0.8977
Epoch 20/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0464 - accuracy: 0.9850 - val_loss: 0.4926 - val_accuracy: 0.8893
Epoch 21/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0614 - accuracy: 0.9828 - val_loss: 0.4672 - val_accuracy: 0.8987
Epoch 22/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0362 - accuracy: 0.9887 - val_loss: 0.5123 - val_accuracy: 0.8877
Epoch 23/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0632 - accuracy: 0.9815 - val_loss: 0.4612 - val_accuracy: 0.8950
Epoch 24/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0264 - accuracy: 0.9919 - val_loss: 0.6377 - val_accuracy: 0.8837
Epoch 25/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0333 - accuracy: 0.9890 - val_loss: 0.9799 - val_accuracy: 0.8063
Epoch 26/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0512 - accuracy: 0.9859 - val_loss: 0.5105 - val_accuracy: 0.8953
Epoch 27/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0325 - accuracy: 0.9903 - val_loss: 0.6493 - val_accuracy: 0.8787
Epoch 28/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0353 - accuracy: 0.9884 - val_loss: 0.5084 - val_accuracy: 0.8880
Epoch 29/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0275 - accuracy: 0.9910 - val_loss: 0.5526 - val_accuracy: 0.8843
Epoch 30/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0429 - accuracy: 0.9862 - val_loss: 0.6521 - val_accuracy: 0.8677
Epoch 31/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0395 - accuracy: 0.9888 - val_loss: 0.6375 - val_accuracy: 0.8767
Epoch 32/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0330 - accuracy: 0.9890 - val_loss: 0.6154 - val_accuracy: 0.8797
Epoch 33/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0218 - accuracy: 0.9935 - val_loss: 0.5421 - val_accuracy: 0.8883
Epoch 34/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0228 - accuracy: 0.9927 - val_loss: 0.6110 - val_accuracy: 0.8913
Epoch 35/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0204 - accuracy: 0.9932 - val_loss: 0.5133 - val_accuracy: 0.9063
Epoch 36/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0322 - accuracy: 0.9907 - val_loss: 0.6160 - val_accuracy: 0.8853
Epoch 37/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0330 - accuracy: 0.9895 - val_loss: 0.5918 - val_accuracy: 0.8807
Epoch 38/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0240 - accuracy: 0.9919 - val_loss: 0.5288 - val_accuracy: 0.8917
Epoch 39/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0551 - accuracy: 0.9839 - val_loss: 0.7073 - val_accuracy: 0.8477
Epoch 40/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0674 - accuracy: 0.9788 - val_loss: 0.4724 - val_accuracy: 0.9043
Epoch 41/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0196 - accuracy: 0.9935 - val_loss: 0.4668 - val_accuracy: 0.9047
Epoch 42/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0174 - accuracy: 0.9945 - val_loss: 0.5918 - val_accuracy: 0.8870
Epoch 43/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0275 - accuracy: 0.9915 - val_loss: 0.5860 - val_accuracy: 0.8767
Epoch 44/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0219 - accuracy: 0.9935 - val_loss: 0.5528 - val_accuracy: 0.8917
Epoch 45/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0194 - accuracy: 0.9948 - val_loss: 0.7569 - val_accuracy: 0.8627
Epoch 46/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0180 - accuracy: 0.9946 - val_loss: 0.6357 - val_accuracy: 0.8847
Epoch 47/50
142/142 [==============================] - 8s 56ms/step - loss: 0.0988 - accuracy: 0.9714 - val_loss: 0.7228 - val_accuracy: 0.8617
Epoch 48/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0254 - accuracy: 0.9920 - val_loss: 0.5753 - val_accuracy: 0.8910
Epoch 49/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0264 - accuracy: 0.9908 - val_loss: 0.5804 - val_accuracy: 0.8870
Epoch 50/50
142/142 [==============================] - 8s 57ms/step - loss: 0.0233 - accuracy: 0.9938 - val_loss: 0.6358 - val_accuracy: 0.8803
94/94 [==============================] - 1s 9ms/step - loss: 0.5993 - accuracy: 0.8803
CNN Error: 11.97%

More Dropouts were added to curb overfitting¶

In [11]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)
model.save_weights("./CNN Weights (128 by 128)/model2.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 10s 66ms/step - loss: 2.5624 - accuracy: 0.1253 - val_loss: 2.4753 - val_accuracy: 0.1310
Epoch 2/50
142/142 [==============================] - 9s 63ms/step - loss: 1.9728 - accuracy: 0.3609 - val_loss: 1.6371 - val_accuracy: 0.4887
Epoch 3/50
142/142 [==============================] - 9s 63ms/step - loss: 1.5005 - accuracy: 0.5222 - val_loss: 1.2568 - val_accuracy: 0.6043
Epoch 4/50
142/142 [==============================] - 9s 63ms/step - loss: 1.1611 - accuracy: 0.6355 - val_loss: 0.9539 - val_accuracy: 0.6973
Epoch 5/50
142/142 [==============================] - 9s 63ms/step - loss: 0.9075 - accuracy: 0.7117 - val_loss: 0.8076 - val_accuracy: 0.7457
Epoch 6/50
142/142 [==============================] - 9s 63ms/step - loss: 0.7153 - accuracy: 0.7724 - val_loss: 0.6058 - val_accuracy: 0.8187
Epoch 7/50
142/142 [==============================] - 9s 63ms/step - loss: 0.5699 - accuracy: 0.8233 - val_loss: 0.4789 - val_accuracy: 0.8523
Epoch 8/50
142/142 [==============================] - 9s 63ms/step - loss: 0.4924 - accuracy: 0.8437 - val_loss: 0.5204 - val_accuracy: 0.8477
Epoch 9/50
142/142 [==============================] - 9s 63ms/step - loss: 0.4080 - accuracy: 0.8691 - val_loss: 0.5018 - val_accuracy: 0.8443
Epoch 10/50
142/142 [==============================] - 9s 63ms/step - loss: 0.3421 - accuracy: 0.8886 - val_loss: 0.5209 - val_accuracy: 0.8533
Epoch 11/50
142/142 [==============================] - 9s 63ms/step - loss: 0.3248 - accuracy: 0.8965 - val_loss: 0.4764 - val_accuracy: 0.8537
Epoch 12/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2690 - accuracy: 0.9143 - val_loss: 0.4030 - val_accuracy: 0.8780
Epoch 13/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2317 - accuracy: 0.9273 - val_loss: 0.3803 - val_accuracy: 0.8917
Epoch 14/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2049 - accuracy: 0.9353 - val_loss: 0.4822 - val_accuracy: 0.8663
Epoch 15/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2006 - accuracy: 0.9369 - val_loss: 0.4180 - val_accuracy: 0.8867
Epoch 16/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1981 - accuracy: 0.9350 - val_loss: 0.3746 - val_accuracy: 0.8960
Epoch 17/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1772 - accuracy: 0.9435 - val_loss: 0.3676 - val_accuracy: 0.8950
Epoch 18/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1739 - accuracy: 0.9465 - val_loss: 0.4823 - val_accuracy: 0.8747
Epoch 19/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1978 - accuracy: 0.9374 - val_loss: 0.4182 - val_accuracy: 0.8893
Epoch 20/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1627 - accuracy: 0.9494 - val_loss: 0.3997 - val_accuracy: 0.8920
Epoch 21/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1450 - accuracy: 0.9546 - val_loss: 0.3868 - val_accuracy: 0.8950
Epoch 22/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1184 - accuracy: 0.9605 - val_loss: 0.3508 - val_accuracy: 0.9077
Epoch 23/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1339 - accuracy: 0.9549 - val_loss: 0.3639 - val_accuracy: 0.9060
Epoch 24/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1430 - accuracy: 0.9557 - val_loss: 0.5005 - val_accuracy: 0.8770
Epoch 25/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1193 - accuracy: 0.9634 - val_loss: 0.3953 - val_accuracy: 0.9057
Epoch 26/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1281 - accuracy: 0.9616 - val_loss: 0.3870 - val_accuracy: 0.8990
Epoch 27/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1101 - accuracy: 0.9672 - val_loss: 0.4204 - val_accuracy: 0.8923
Epoch 28/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1120 - accuracy: 0.9657 - val_loss: 0.3896 - val_accuracy: 0.8990
Epoch 29/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1397 - accuracy: 0.9541 - val_loss: 0.4451 - val_accuracy: 0.8823
Epoch 30/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1203 - accuracy: 0.9627 - val_loss: 0.5468 - val_accuracy: 0.8633
Epoch 31/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1106 - accuracy: 0.9670 - val_loss: 0.4898 - val_accuracy: 0.8787
Epoch 32/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1342 - accuracy: 0.9578 - val_loss: 0.3819 - val_accuracy: 0.9040
Epoch 33/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0830 - accuracy: 0.9734 - val_loss: 0.3956 - val_accuracy: 0.9060
Epoch 34/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0813 - accuracy: 0.9735 - val_loss: 0.4085 - val_accuracy: 0.9067
Epoch 35/50
142/142 [==============================] - 9s 66ms/step - loss: 0.1038 - accuracy: 0.9670 - val_loss: 0.4003 - val_accuracy: 0.9027
Epoch 36/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0998 - accuracy: 0.9704 - val_loss: 0.4241 - val_accuracy: 0.8940
Epoch 37/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0821 - accuracy: 0.9723 - val_loss: 0.3779 - val_accuracy: 0.9110
Epoch 38/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0694 - accuracy: 0.9782 - val_loss: 0.4344 - val_accuracy: 0.8997
Epoch 39/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0853 - accuracy: 0.9732 - val_loss: 0.6170 - val_accuracy: 0.8710
Epoch 40/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1313 - accuracy: 0.9622 - val_loss: 0.4119 - val_accuracy: 0.8977
Epoch 41/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0960 - accuracy: 0.9701 - val_loss: 0.4522 - val_accuracy: 0.8927
Epoch 42/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0759 - accuracy: 0.9754 - val_loss: 0.4420 - val_accuracy: 0.9003
Epoch 43/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0828 - accuracy: 0.9734 - val_loss: 0.4200 - val_accuracy: 0.9057
Epoch 44/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0817 - accuracy: 0.9743 - val_loss: 0.4871 - val_accuracy: 0.8837
Epoch 45/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1217 - accuracy: 0.9643 - val_loss: 0.4099 - val_accuracy: 0.8990
Epoch 46/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0837 - accuracy: 0.9734 - val_loss: 0.5811 - val_accuracy: 0.8623
Epoch 47/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0651 - accuracy: 0.9785 - val_loss: 0.4444 - val_accuracy: 0.8913
Epoch 48/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0617 - accuracy: 0.9807 - val_loss: 0.3917 - val_accuracy: 0.9070
Epoch 49/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0684 - accuracy: 0.9803 - val_loss: 0.3941 - val_accuracy: 0.9063
Epoch 50/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0689 - accuracy: 0.9778 - val_loss: 0.4472 - val_accuracy: 0.8977
94/94 [==============================] - 1s 9ms/step - loss: 0.4286 - accuracy: 0.9047
CNN Error: 9.53%

Load Model 2 (128 x 128)¶

In [12]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.load_weights("./CNN Weights (128 by 128)/model2.h5")

Model 3 (128 by 128)¶

In [14]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))


model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 6s 32ms/step - loss: 2.0570 - accuracy: 0.3329 - val_loss: 1.9072 - val_accuracy: 0.3930
Epoch 2/50
142/142 [==============================] - 4s 28ms/step - loss: 1.3126 - accuracy: 0.5915 - val_loss: 1.1339 - val_accuracy: 0.6503
Epoch 3/50
142/142 [==============================] - 4s 28ms/step - loss: 0.9378 - accuracy: 0.7077 - val_loss: 0.8430 - val_accuracy: 0.7257
Epoch 4/50
142/142 [==============================] - 4s 28ms/step - loss: 0.6491 - accuracy: 0.7913 - val_loss: 0.6181 - val_accuracy: 0.8093
Epoch 5/50
142/142 [==============================] - 4s 28ms/step - loss: 0.4644 - accuracy: 0.8501 - val_loss: 0.5436 - val_accuracy: 0.8370
Epoch 6/50
142/142 [==============================] - 4s 28ms/step - loss: 0.3293 - accuracy: 0.8960 - val_loss: 0.5447 - val_accuracy: 0.8453
Epoch 7/50
142/142 [==============================] - 4s 28ms/step - loss: 0.2683 - accuracy: 0.9111 - val_loss: 0.4947 - val_accuracy: 0.8587
Epoch 8/50
142/142 [==============================] - 4s 29ms/step - loss: 0.2039 - accuracy: 0.9344 - val_loss: 0.5082 - val_accuracy: 0.8603
Epoch 9/50
142/142 [==============================] - 4s 28ms/step - loss: 0.1604 - accuracy: 0.9471 - val_loss: 0.6340 - val_accuracy: 0.8280
Epoch 10/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1830 - accuracy: 0.9410 - val_loss: 0.5312 - val_accuracy: 0.8570
Epoch 11/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1113 - accuracy: 0.9632 - val_loss: 0.6433 - val_accuracy: 0.8490
Epoch 12/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1139 - accuracy: 0.9637 - val_loss: 0.5440 - val_accuracy: 0.8630
Epoch 13/50
142/142 [==============================] - 4s 29ms/step - loss: 0.1055 - accuracy: 0.9629 - val_loss: 0.5925 - val_accuracy: 0.8500
Epoch 14/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0787 - accuracy: 0.9721 - val_loss: 0.6505 - val_accuracy: 0.8610
Epoch 15/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0737 - accuracy: 0.9747 - val_loss: 0.4985 - val_accuracy: 0.8873
Epoch 16/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0805 - accuracy: 0.9737 - val_loss: 0.4743 - val_accuracy: 0.8807
Epoch 17/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0832 - accuracy: 0.9735 - val_loss: 0.5212 - val_accuracy: 0.8783
Epoch 18/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0568 - accuracy: 0.9831 - val_loss: 0.5473 - val_accuracy: 0.8820
Epoch 19/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0596 - accuracy: 0.9813 - val_loss: 0.5410 - val_accuracy: 0.8820
Epoch 20/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0682 - accuracy: 0.9773 - val_loss: 0.5793 - val_accuracy: 0.8757
Epoch 21/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0538 - accuracy: 0.9813 - val_loss: 0.6512 - val_accuracy: 0.8707
Epoch 22/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0492 - accuracy: 0.9826 - val_loss: 0.7526 - val_accuracy: 0.8583
Epoch 23/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0605 - accuracy: 0.9813 - val_loss: 0.6372 - val_accuracy: 0.8750
Epoch 24/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0468 - accuracy: 0.9859 - val_loss: 0.6173 - val_accuracy: 0.8870
Epoch 25/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0551 - accuracy: 0.9827 - val_loss: 0.7001 - val_accuracy: 0.8587
Epoch 26/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0704 - accuracy: 0.9783 - val_loss: 0.7478 - val_accuracy: 0.8547
Epoch 27/50
142/142 [==============================] - 4s 29ms/step - loss: 0.0584 - accuracy: 0.9804 - val_loss: 0.6692 - val_accuracy: 0.8670
Epoch 28/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0446 - accuracy: 0.9859 - val_loss: 0.5792 - val_accuracy: 0.8820
Epoch 29/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0475 - accuracy: 0.9843 - val_loss: 0.6755 - val_accuracy: 0.8693
Epoch 30/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0278 - accuracy: 0.9910 - val_loss: 0.6274 - val_accuracy: 0.8807
Epoch 31/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0698 - accuracy: 0.9791 - val_loss: 0.7582 - val_accuracy: 0.8530
Epoch 32/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0470 - accuracy: 0.9845 - val_loss: 0.6423 - val_accuracy: 0.8767
Epoch 33/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0524 - accuracy: 0.9825 - val_loss: 0.6244 - val_accuracy: 0.8840
Epoch 34/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0322 - accuracy: 0.9888 - val_loss: 0.8875 - val_accuracy: 0.8460
Epoch 35/50
142/142 [==============================] - 4s 27ms/step - loss: 0.2068 - accuracy: 0.9395 - val_loss: 0.8301 - val_accuracy: 0.8340
Epoch 36/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0504 - accuracy: 0.9835 - val_loss: 0.6616 - val_accuracy: 0.8687
Epoch 37/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0476 - accuracy: 0.9858 - val_loss: 0.7482 - val_accuracy: 0.8590
Epoch 38/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0400 - accuracy: 0.9868 - val_loss: 0.8112 - val_accuracy: 0.8573
Epoch 39/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0398 - accuracy: 0.9881 - val_loss: 0.6541 - val_accuracy: 0.8763
Epoch 40/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0275 - accuracy: 0.9905 - val_loss: 0.7334 - val_accuracy: 0.8747
Epoch 41/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0215 - accuracy: 0.9928 - val_loss: 0.7647 - val_accuracy: 0.8687
Epoch 42/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0181 - accuracy: 0.9939 - val_loss: 0.8312 - val_accuracy: 0.8760
Epoch 43/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0315 - accuracy: 0.9895 - val_loss: 0.7652 - val_accuracy: 0.8653
Epoch 44/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0641 - accuracy: 0.9801 - val_loss: 0.7082 - val_accuracy: 0.8673
Epoch 45/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0213 - accuracy: 0.9938 - val_loss: 0.8612 - val_accuracy: 0.8670
Epoch 46/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0209 - accuracy: 0.9930 - val_loss: 0.8441 - val_accuracy: 0.8707
Epoch 47/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0194 - accuracy: 0.9932 - val_loss: 0.8391 - val_accuracy: 0.8713
Epoch 48/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0201 - accuracy: 0.9931 - val_loss: 0.7398 - val_accuracy: 0.8813
Epoch 49/50
142/142 [==============================] - 4s 28ms/step - loss: 0.0382 - accuracy: 0.9876 - val_loss: 0.8117 - val_accuracy: 0.8700
Epoch 50/50
142/142 [==============================] - 4s 27ms/step - loss: 0.0362 - accuracy: 0.9888 - val_loss: 0.8850 - val_accuracy: 0.8550
94/94 [==============================] - 1s 7ms/step - loss: 0.7889 - accuracy: 0.8543
CNN Error: 14.57%

More Dropouts were added to curb overfitting as the loss graph shows a marginal increase towards the end.¶

In [8]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)
model.save_weights("./CNN Weights (128 by 128)/model3.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 8s 37ms/step - loss: 2.4346 - accuracy: 0.1938 - val_loss: 2.1699 - val_accuracy: 0.3087
Epoch 2/50
142/142 [==============================] - 5s 32ms/step - loss: 1.8106 - accuracy: 0.4205 - val_loss: 1.7204 - val_accuracy: 0.4530
Epoch 3/50
142/142 [==============================] - 5s 32ms/step - loss: 1.4363 - accuracy: 0.5409 - val_loss: 1.5412 - val_accuracy: 0.5013
Epoch 4/50
142/142 [==============================] - 5s 32ms/step - loss: 1.1248 - accuracy: 0.6356 - val_loss: 0.9706 - val_accuracy: 0.6943
Epoch 5/50
142/142 [==============================] - 5s 33ms/step - loss: 0.9090 - accuracy: 0.7023 - val_loss: 0.7986 - val_accuracy: 0.7403
Epoch 6/50
142/142 [==============================] - 5s 33ms/step - loss: 0.7272 - accuracy: 0.7648 - val_loss: 0.6618 - val_accuracy: 0.8063
Epoch 7/50
142/142 [==============================] - 5s 33ms/step - loss: 0.6122 - accuracy: 0.7987 - val_loss: 0.5831 - val_accuracy: 0.8113
Epoch 8/50
142/142 [==============================] - 5s 33ms/step - loss: 0.5145 - accuracy: 0.8309 - val_loss: 0.5752 - val_accuracy: 0.8227
Epoch 9/50
142/142 [==============================] - 5s 32ms/step - loss: 0.4574 - accuracy: 0.8543 - val_loss: 0.5509 - val_accuracy: 0.8320
Epoch 10/50
142/142 [==============================] - 4s 32ms/step - loss: 0.3795 - accuracy: 0.8733 - val_loss: 0.5477 - val_accuracy: 0.8340
Epoch 11/50
142/142 [==============================] - 5s 32ms/step - loss: 0.3749 - accuracy: 0.8774 - val_loss: 0.4873 - val_accuracy: 0.8547
Epoch 12/50
142/142 [==============================] - 4s 32ms/step - loss: 0.3070 - accuracy: 0.8981 - val_loss: 0.4618 - val_accuracy: 0.8683
Epoch 13/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2883 - accuracy: 0.9011 - val_loss: 0.4778 - val_accuracy: 0.8623
Epoch 14/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2475 - accuracy: 0.9149 - val_loss: 0.4755 - val_accuracy: 0.8660
Epoch 15/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2351 - accuracy: 0.9195 - val_loss: 0.4748 - val_accuracy: 0.8713
Epoch 16/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2098 - accuracy: 0.9293 - val_loss: 0.4826 - val_accuracy: 0.8700
Epoch 17/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1881 - accuracy: 0.9348 - val_loss: 0.4459 - val_accuracy: 0.8743
Epoch 18/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1904 - accuracy: 0.9363 - val_loss: 0.4652 - val_accuracy: 0.8733
Epoch 19/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2303 - accuracy: 0.9220 - val_loss: 0.5599 - val_accuracy: 0.8440
Epoch 20/50
142/142 [==============================] - 5s 32ms/step - loss: 0.2044 - accuracy: 0.9337 - val_loss: 0.4865 - val_accuracy: 0.8717
Epoch 21/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1545 - accuracy: 0.9482 - val_loss: 0.5159 - val_accuracy: 0.8630
Epoch 22/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1553 - accuracy: 0.9484 - val_loss: 0.4524 - val_accuracy: 0.8833
Epoch 23/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1373 - accuracy: 0.9528 - val_loss: 0.4030 - val_accuracy: 0.8907
Epoch 24/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1296 - accuracy: 0.9574 - val_loss: 0.4708 - val_accuracy: 0.8797
Epoch 25/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1316 - accuracy: 0.9555 - val_loss: 0.4125 - val_accuracy: 0.8957
Epoch 26/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1213 - accuracy: 0.9577 - val_loss: 0.4323 - val_accuracy: 0.8887
Epoch 27/50
142/142 [==============================] - 5s 33ms/step - loss: 0.1233 - accuracy: 0.9585 - val_loss: 0.4514 - val_accuracy: 0.8927
Epoch 28/50
142/142 [==============================] - 5s 33ms/step - loss: 0.1356 - accuracy: 0.9546 - val_loss: 0.3775 - val_accuracy: 0.8973
Epoch 29/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1221 - accuracy: 0.9570 - val_loss: 0.4638 - val_accuracy: 0.8830
Epoch 30/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1129 - accuracy: 0.9609 - val_loss: 0.6118 - val_accuracy: 0.8697
Epoch 31/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1091 - accuracy: 0.9637 - val_loss: 0.5502 - val_accuracy: 0.8757
Epoch 32/50
142/142 [==============================] - 5s 33ms/step - loss: 0.1124 - accuracy: 0.9619 - val_loss: 0.4343 - val_accuracy: 0.8907
Epoch 33/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1108 - accuracy: 0.9621 - val_loss: 0.4142 - val_accuracy: 0.8953
Epoch 34/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1000 - accuracy: 0.9661 - val_loss: 0.5595 - val_accuracy: 0.8753
Epoch 35/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1438 - accuracy: 0.9531 - val_loss: 0.4606 - val_accuracy: 0.8867
Epoch 36/50
142/142 [==============================] - 5s 33ms/step - loss: 0.0912 - accuracy: 0.9692 - val_loss: 0.5568 - val_accuracy: 0.8800
Epoch 37/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1128 - accuracy: 0.9606 - val_loss: 0.4484 - val_accuracy: 0.8893
Epoch 38/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1217 - accuracy: 0.9572 - val_loss: 0.7091 - val_accuracy: 0.8457
Epoch 39/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1078 - accuracy: 0.9644 - val_loss: 0.4544 - val_accuracy: 0.9007
Epoch 40/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0917 - accuracy: 0.9702 - val_loss: 0.4800 - val_accuracy: 0.8877
Epoch 41/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0758 - accuracy: 0.9757 - val_loss: 0.4089 - val_accuracy: 0.9000
Epoch 42/50
142/142 [==============================] - 5s 33ms/step - loss: 0.0883 - accuracy: 0.9703 - val_loss: 0.4534 - val_accuracy: 0.8927
Epoch 43/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0867 - accuracy: 0.9726 - val_loss: 0.4685 - val_accuracy: 0.8917
Epoch 44/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0715 - accuracy: 0.9750 - val_loss: 0.4401 - val_accuracy: 0.9000
Epoch 45/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0705 - accuracy: 0.9759 - val_loss: 0.4436 - val_accuracy: 0.8957
Epoch 46/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1052 - accuracy: 0.9647 - val_loss: 0.4595 - val_accuracy: 0.8923
Epoch 47/50
142/142 [==============================] - 5s 33ms/step - loss: 0.0631 - accuracy: 0.9787 - val_loss: 0.4841 - val_accuracy: 0.8953
Epoch 48/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0722 - accuracy: 0.9751 - val_loss: 0.4429 - val_accuracy: 0.9020
Epoch 49/50
142/142 [==============================] - 5s 33ms/step - loss: 0.0617 - accuracy: 0.9791 - val_loss: 0.5508 - val_accuracy: 0.8930
Epoch 50/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0725 - accuracy: 0.9759 - val_loss: 0.6426 - val_accuracy: 0.8717
94/94 [==============================] - 1s 8ms/step - loss: 0.6255 - accuracy: 0.8733
CNN Error: 12.67%
In [11]:
model.summary()
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d (Conv2D)             (None, 126, 126, 32)      320       
                                                                 
 max_pooling2d (MaxPooling2D  (None, 63, 63, 32)       0         
 )                                                               
                                                                 
 dropout (Dropout)           (None, 63, 63, 32)        0         
                                                                 
 conv2d_1 (Conv2D)           (None, 61, 61, 64)        18496     
                                                                 
 max_pooling2d_1 (MaxPooling  (None, 30, 30, 64)       0         
 2D)                                                             
                                                                 
 dropout_1 (Dropout)         (None, 30, 30, 64)        0         
                                                                 
 conv2d_2 (Conv2D)           (None, 28, 28, 128)       73856     
                                                                 
 max_pooling2d_2 (MaxPooling  (None, 14, 14, 128)      0         
 2D)                                                             
                                                                 
 dropout_2 (Dropout)         (None, 14, 14, 128)       0         
                                                                 
 flatten (Flatten)           (None, 25088)             0         
                                                                 
 dense (Dense)               (None, 256)               6422784   
                                                                 
 dropout_3 (Dropout)         (None, 256)               0         
                                                                 
 dense_1 (Dense)             (None, 15)                3855      
                                                                 
=================================================================
Total params: 6,519,311
Trainable params: 6,519,311
Non-trainable params: 0
_________________________________________________________________

Load Model 3 (128 x 128)¶

In [9]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.load_weights("./CNN Weights (128 by 128)/model3.h5")

Data Augmentation¶

From the scores, we will choose Model 1 and Model 2 to further improve it due to its high test and validation accuracy scores¶

Model 1 (Before Augmentation)¶

In [12]:
model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 6s 34ms/step - loss: 2.4773 - accuracy: 0.1608 - val_loss: 2.1693 - val_accuracy: 0.3207
Epoch 2/50
142/142 [==============================] - 5s 32ms/step - loss: 1.8187 - accuracy: 0.4116 - val_loss: 1.5705 - val_accuracy: 0.4913
Epoch 3/50
142/142 [==============================] - 5s 32ms/step - loss: 1.4427 - accuracy: 0.5336 - val_loss: 1.2905 - val_accuracy: 0.5920
Epoch 4/50
142/142 [==============================] - 5s 32ms/step - loss: 1.2025 - accuracy: 0.6131 - val_loss: 1.0292 - val_accuracy: 0.6800
Epoch 5/50
142/142 [==============================] - 5s 33ms/step - loss: 0.9936 - accuracy: 0.6837 - val_loss: 0.8290 - val_accuracy: 0.7460
Epoch 6/50
142/142 [==============================] - 5s 32ms/step - loss: 0.8146 - accuracy: 0.7401 - val_loss: 0.7248 - val_accuracy: 0.7757
Epoch 7/50
142/142 [==============================] - 5s 32ms/step - loss: 0.6606 - accuracy: 0.7931 - val_loss: 0.6169 - val_accuracy: 0.8120
Epoch 8/50
142/142 [==============================] - 5s 33ms/step - loss: 0.5487 - accuracy: 0.8209 - val_loss: 0.5829 - val_accuracy: 0.8183
Epoch 9/50
142/142 [==============================] - 5s 33ms/step - loss: 0.5273 - accuracy: 0.8301 - val_loss: 0.5874 - val_accuracy: 0.8153
Epoch 10/50
142/142 [==============================] - 5s 33ms/step - loss: 0.4469 - accuracy: 0.8580 - val_loss: 0.4445 - val_accuracy: 0.8693
Epoch 11/50
142/142 [==============================] - 5s 32ms/step - loss: 0.3817 - accuracy: 0.8789 - val_loss: 0.4105 - val_accuracy: 0.8750
Epoch 12/50
142/142 [==============================] - 4s 32ms/step - loss: 0.3113 - accuracy: 0.8975 - val_loss: 0.4047 - val_accuracy: 0.8777
Epoch 13/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2689 - accuracy: 0.9157 - val_loss: 0.4700 - val_accuracy: 0.8643
Epoch 14/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2680 - accuracy: 0.9128 - val_loss: 0.5721 - val_accuracy: 0.8360
Epoch 15/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2304 - accuracy: 0.9257 - val_loss: 0.4780 - val_accuracy: 0.8710
Epoch 16/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2561 - accuracy: 0.9181 - val_loss: 0.4851 - val_accuracy: 0.8680
Epoch 17/50
142/142 [==============================] - 4s 31ms/step - loss: 0.2037 - accuracy: 0.9342 - val_loss: 0.4127 - val_accuracy: 0.8797
Epoch 18/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1654 - accuracy: 0.9454 - val_loss: 0.4070 - val_accuracy: 0.8843
Epoch 19/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1937 - accuracy: 0.9360 - val_loss: 0.4068 - val_accuracy: 0.8893
Epoch 20/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1649 - accuracy: 0.9459 - val_loss: 0.3681 - val_accuracy: 0.9010
Epoch 21/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1471 - accuracy: 0.9513 - val_loss: 0.4340 - val_accuracy: 0.8813
Epoch 22/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1463 - accuracy: 0.9559 - val_loss: 0.4348 - val_accuracy: 0.8970
Epoch 23/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1473 - accuracy: 0.9534 - val_loss: 0.3653 - val_accuracy: 0.9027
Epoch 24/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1324 - accuracy: 0.9572 - val_loss: 0.4355 - val_accuracy: 0.8900
Epoch 25/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1482 - accuracy: 0.9530 - val_loss: 0.4083 - val_accuracy: 0.8913
Epoch 26/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1275 - accuracy: 0.9571 - val_loss: 0.4642 - val_accuracy: 0.8867
Epoch 27/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1255 - accuracy: 0.9610 - val_loss: 0.3827 - val_accuracy: 0.9050
Epoch 28/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1216 - accuracy: 0.9616 - val_loss: 0.3890 - val_accuracy: 0.9000
Epoch 29/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1211 - accuracy: 0.9620 - val_loss: 0.4368 - val_accuracy: 0.8910
Epoch 30/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1080 - accuracy: 0.9667 - val_loss: 0.5428 - val_accuracy: 0.8697
Epoch 31/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1911 - accuracy: 0.9426 - val_loss: 0.3654 - val_accuracy: 0.9067
Epoch 32/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1061 - accuracy: 0.9690 - val_loss: 0.3690 - val_accuracy: 0.9103
Epoch 33/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0940 - accuracy: 0.9705 - val_loss: 0.3987 - val_accuracy: 0.8990
Epoch 34/50
142/142 [==============================] - 4s 32ms/step - loss: 0.0988 - accuracy: 0.9681 - val_loss: 0.3813 - val_accuracy: 0.9080
Epoch 35/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1100 - accuracy: 0.9665 - val_loss: 0.4072 - val_accuracy: 0.8947
Epoch 36/50
142/142 [==============================] - 4s 32ms/step - loss: 0.0906 - accuracy: 0.9720 - val_loss: 0.3835 - val_accuracy: 0.9093
Epoch 37/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0702 - accuracy: 0.9761 - val_loss: 0.3920 - val_accuracy: 0.9060
Epoch 38/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0979 - accuracy: 0.9708 - val_loss: 0.4382 - val_accuracy: 0.8917
Epoch 39/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0766 - accuracy: 0.9754 - val_loss: 0.4767 - val_accuracy: 0.8967
Epoch 40/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0907 - accuracy: 0.9721 - val_loss: 0.4157 - val_accuracy: 0.9040
Epoch 41/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0756 - accuracy: 0.9751 - val_loss: 0.4319 - val_accuracy: 0.9027
Epoch 42/50
142/142 [==============================] - 4s 31ms/step - loss: 0.0969 - accuracy: 0.9696 - val_loss: 0.3440 - val_accuracy: 0.9110
Epoch 43/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1086 - accuracy: 0.9677 - val_loss: 0.4687 - val_accuracy: 0.8870
Epoch 44/50
142/142 [==============================] - 4s 31ms/step - loss: 0.1157 - accuracy: 0.9628 - val_loss: 0.4029 - val_accuracy: 0.8997
Epoch 45/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0579 - accuracy: 0.9812 - val_loss: 0.4378 - val_accuracy: 0.9033
Epoch 46/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0631 - accuracy: 0.9812 - val_loss: 0.4030 - val_accuracy: 0.9037
Epoch 47/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0624 - accuracy: 0.9794 - val_loss: 0.5194 - val_accuracy: 0.8937
Epoch 48/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0808 - accuracy: 0.9744 - val_loss: 0.4438 - val_accuracy: 0.8970
Epoch 49/50
142/142 [==============================] - 5s 32ms/step - loss: 0.1113 - accuracy: 0.9672 - val_loss: 0.4013 - val_accuracy: 0.9100
Epoch 50/50
142/142 [==============================] - 5s 32ms/step - loss: 0.0771 - accuracy: 0.9751 - val_loss: 0.3780 - val_accuracy: 0.9080
94/94 [==============================] - 1s 6ms/step - loss: 0.3806 - accuracy: 0.9133
CNN Error: 8.67%

Model 1 (After Augmentation)¶

In [13]:
model = Sequential()
model.add(RandomFlip('horizontal',input_shape=(128,128,1)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 8s 53ms/step - loss: 2.4955 - accuracy: 0.1599 - val_loss: 2.2380 - val_accuracy: 0.3130
Epoch 2/50
142/142 [==============================] - 7s 49ms/step - loss: 1.8538 - accuracy: 0.4060 - val_loss: 1.9315 - val_accuracy: 0.3593
Epoch 3/50
142/142 [==============================] - 7s 49ms/step - loss: 1.4846 - accuracy: 0.5233 - val_loss: 2.9006 - val_accuracy: 0.2413
Epoch 4/50
142/142 [==============================] - 7s 48ms/step - loss: 1.2266 - accuracy: 0.6133 - val_loss: 1.1657 - val_accuracy: 0.6340
Epoch 5/50
142/142 [==============================] - 7s 49ms/step - loss: 0.9686 - accuracy: 0.6925 - val_loss: 0.8707 - val_accuracy: 0.7307
Epoch 6/50
142/142 [==============================] - 7s 47ms/step - loss: 0.7827 - accuracy: 0.7531 - val_loss: 0.8915 - val_accuracy: 0.7207
Epoch 7/50
142/142 [==============================] - 7s 46ms/step - loss: 0.6538 - accuracy: 0.7912 - val_loss: 0.6167 - val_accuracy: 0.8137
Epoch 8/50
142/142 [==============================] - 7s 47ms/step - loss: 0.5322 - accuracy: 0.8269 - val_loss: 0.6596 - val_accuracy: 0.8020
Epoch 9/50
142/142 [==============================] - 7s 47ms/step - loss: 0.4920 - accuracy: 0.8451 - val_loss: 0.5148 - val_accuracy: 0.8510
Epoch 10/50
142/142 [==============================] - 7s 47ms/step - loss: 0.3693 - accuracy: 0.8805 - val_loss: 0.4720 - val_accuracy: 0.8563
Epoch 11/50
142/142 [==============================] - 7s 47ms/step - loss: 0.3608 - accuracy: 0.8887 - val_loss: 0.5377 - val_accuracy: 0.8313
Epoch 12/50
142/142 [==============================] - 7s 47ms/step - loss: 0.3226 - accuracy: 0.8950 - val_loss: 0.4410 - val_accuracy: 0.8610
Epoch 13/50
142/142 [==============================] - 7s 47ms/step - loss: 0.2672 - accuracy: 0.9158 - val_loss: 0.4212 - val_accuracy: 0.8763
Epoch 14/50
142/142 [==============================] - 7s 48ms/step - loss: 0.2391 - accuracy: 0.9233 - val_loss: 0.5566 - val_accuracy: 0.8397
Epoch 15/50
142/142 [==============================] - 7s 47ms/step - loss: 0.2454 - accuracy: 0.9221 - val_loss: 0.4231 - val_accuracy: 0.8780
Epoch 16/50
142/142 [==============================] - 7s 47ms/step - loss: 0.2078 - accuracy: 0.9351 - val_loss: 0.4853 - val_accuracy: 0.8647
Epoch 17/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1953 - accuracy: 0.9383 - val_loss: 0.5119 - val_accuracy: 0.8553
Epoch 18/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1778 - accuracy: 0.9383 - val_loss: 0.4864 - val_accuracy: 0.8697
Epoch 19/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1809 - accuracy: 0.9416 - val_loss: 0.5001 - val_accuracy: 0.8593
Epoch 20/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1758 - accuracy: 0.9451 - val_loss: 0.5099 - val_accuracy: 0.8637
Epoch 21/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1542 - accuracy: 0.9493 - val_loss: 0.4842 - val_accuracy: 0.8700
Epoch 22/50
142/142 [==============================] - 7s 48ms/step - loss: 0.1297 - accuracy: 0.9581 - val_loss: 0.4483 - val_accuracy: 0.8827
Epoch 23/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1327 - accuracy: 0.9575 - val_loss: 0.3977 - val_accuracy: 0.8913
Epoch 24/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1381 - accuracy: 0.9559 - val_loss: 0.4148 - val_accuracy: 0.8837
Epoch 25/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1238 - accuracy: 0.9606 - val_loss: 0.4667 - val_accuracy: 0.8747
Epoch 26/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1166 - accuracy: 0.9636 - val_loss: 0.4725 - val_accuracy: 0.8740
Epoch 27/50
142/142 [==============================] - 7s 46ms/step - loss: 0.1457 - accuracy: 0.9544 - val_loss: 0.4376 - val_accuracy: 0.8823
Epoch 28/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1153 - accuracy: 0.9632 - val_loss: 0.4858 - val_accuracy: 0.8750
Epoch 29/50
142/142 [==============================] - 7s 47ms/step - loss: 0.0971 - accuracy: 0.9700 - val_loss: 0.4194 - val_accuracy: 0.8920
Epoch 30/50
142/142 [==============================] - 7s 46ms/step - loss: 0.0996 - accuracy: 0.9685 - val_loss: 0.4119 - val_accuracy: 0.8973
Epoch 31/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1091 - accuracy: 0.9650 - val_loss: 0.4945 - val_accuracy: 0.8677
Epoch 32/50
142/142 [==============================] - 7s 48ms/step - loss: 0.1199 - accuracy: 0.9617 - val_loss: 0.4767 - val_accuracy: 0.8887
Epoch 33/50
142/142 [==============================] - 7s 47ms/step - loss: 0.0924 - accuracy: 0.9718 - val_loss: 0.4508 - val_accuracy: 0.8850
Epoch 34/50
142/142 [==============================] - 7s 47ms/step - loss: 0.1221 - accuracy: 0.9632 - val_loss: 0.4389 - val_accuracy: 0.8903
Epoch 35/50
142/142 [==============================] - 7s 51ms/step - loss: 0.1124 - accuracy: 0.9665 - val_loss: 0.4545 - val_accuracy: 0.8970
Epoch 36/50
142/142 [==============================] - 7s 50ms/step - loss: 0.1008 - accuracy: 0.9689 - val_loss: 0.4692 - val_accuracy: 0.8823
Epoch 37/50
142/142 [==============================] - 7s 48ms/step - loss: 0.0875 - accuracy: 0.9724 - val_loss: 0.4037 - val_accuracy: 0.8987
Epoch 38/50
142/142 [==============================] - 7s 47ms/step - loss: 0.0954 - accuracy: 0.9683 - val_loss: 0.4421 - val_accuracy: 0.8930
Epoch 39/50
142/142 [==============================] - 7s 47ms/step - loss: 0.0917 - accuracy: 0.9730 - val_loss: 0.4280 - val_accuracy: 0.8947
Epoch 40/50
142/142 [==============================] - 7s 47ms/step - loss: 0.0816 - accuracy: 0.9733 - val_loss: 0.4669 - val_accuracy: 0.8943
Epoch 41/50
142/142 [==============================] - 7s 50ms/step - loss: 0.0738 - accuracy: 0.9777 - val_loss: 0.4518 - val_accuracy: 0.8937
Epoch 42/50
142/142 [==============================] - 7s 51ms/step - loss: 0.0698 - accuracy: 0.9771 - val_loss: 0.4426 - val_accuracy: 0.8997
Epoch 43/50
142/142 [==============================] - 7s 51ms/step - loss: 0.0871 - accuracy: 0.9728 - val_loss: 0.4721 - val_accuracy: 0.8807
Epoch 44/50
142/142 [==============================] - 7s 51ms/step - loss: 0.0621 - accuracy: 0.9802 - val_loss: 0.5414 - val_accuracy: 0.8793
Epoch 45/50
142/142 [==============================] - 7s 48ms/step - loss: 0.0854 - accuracy: 0.9746 - val_loss: 0.4426 - val_accuracy: 0.8937
Epoch 46/50
142/142 [==============================] - 7s 46ms/step - loss: 0.0768 - accuracy: 0.9760 - val_loss: 0.4173 - val_accuracy: 0.9007
Epoch 47/50
142/142 [==============================] - 7s 46ms/step - loss: 0.0858 - accuracy: 0.9728 - val_loss: 0.4271 - val_accuracy: 0.8923
Epoch 48/50
142/142 [==============================] - 7s 46ms/step - loss: 0.0590 - accuracy: 0.9818 - val_loss: 0.4018 - val_accuracy: 0.9000
Epoch 49/50
142/142 [==============================] - 6s 46ms/step - loss: 0.0787 - accuracy: 0.9761 - val_loss: 0.4493 - val_accuracy: 0.8907
Epoch 50/50
142/142 [==============================] - 7s 46ms/step - loss: 0.0663 - accuracy: 0.9798 - val_loss: 0.3984 - val_accuracy: 0.8997
94/94 [==============================] - 1s 6ms/step - loss: 0.4195 - accuracy: 0.8953
CNN Error: 10.47%

Augmentation decreases the accuracy score, we will not implement it¶

Model 2 (Before Augmentation)¶

In [8]:
model = Sequential()

model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 13s 68ms/step - loss: 2.4850 - accuracy: 0.1582 - val_loss: 2.0899 - val_accuracy: 0.3210
Epoch 2/50
142/142 [==============================] - 8s 59ms/step - loss: 1.7564 - accuracy: 0.4415 - val_loss: 1.4554 - val_accuracy: 0.5177
Epoch 3/50
142/142 [==============================] - 8s 59ms/step - loss: 1.3213 - accuracy: 0.5716 - val_loss: 1.3541 - val_accuracy: 0.5670
Epoch 4/50
142/142 [==============================] - 8s 60ms/step - loss: 1.0303 - accuracy: 0.6801 - val_loss: 0.8302 - val_accuracy: 0.7350
Epoch 5/50
142/142 [==============================] - 8s 60ms/step - loss: 0.7467 - accuracy: 0.7693 - val_loss: 0.7806 - val_accuracy: 0.7510
Epoch 6/50
142/142 [==============================] - 8s 59ms/step - loss: 0.5834 - accuracy: 0.8126 - val_loss: 0.6830 - val_accuracy: 0.7933
Epoch 7/50
142/142 [==============================] - 8s 60ms/step - loss: 0.4737 - accuracy: 0.8517 - val_loss: 0.4732 - val_accuracy: 0.8603
Epoch 8/50
142/142 [==============================] - 8s 60ms/step - loss: 0.4650 - accuracy: 0.8599 - val_loss: 0.5352 - val_accuracy: 0.8370
Epoch 9/50
142/142 [==============================] - 9s 60ms/step - loss: 0.3633 - accuracy: 0.8868 - val_loss: 0.8277 - val_accuracy: 0.7540
Epoch 10/50
142/142 [==============================] - 9s 61ms/step - loss: 0.3421 - accuracy: 0.8920 - val_loss: 0.4116 - val_accuracy: 0.8780
Epoch 11/50
142/142 [==============================] - 9s 60ms/step - loss: 0.2416 - accuracy: 0.9226 - val_loss: 0.4124 - val_accuracy: 0.8850
Epoch 12/50
142/142 [==============================] - 9s 60ms/step - loss: 0.2023 - accuracy: 0.9339 - val_loss: 0.4348 - val_accuracy: 0.8777
Epoch 13/50
142/142 [==============================] - 9s 61ms/step - loss: 0.2252 - accuracy: 0.9276 - val_loss: 0.3851 - val_accuracy: 0.8920
Epoch 14/50
142/142 [==============================] - 9s 61ms/step - loss: 0.1674 - accuracy: 0.9471 - val_loss: 0.3729 - val_accuracy: 0.8967
Epoch 15/50
142/142 [==============================] - 9s 60ms/step - loss: 0.1871 - accuracy: 0.9393 - val_loss: 0.4539 - val_accuracy: 0.8767
Epoch 16/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1549 - accuracy: 0.9527 - val_loss: 0.4446 - val_accuracy: 0.8867
Epoch 17/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1390 - accuracy: 0.9554 - val_loss: 0.4577 - val_accuracy: 0.8830
Epoch 18/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1425 - accuracy: 0.9554 - val_loss: 0.3873 - val_accuracy: 0.8980
Epoch 19/50
142/142 [==============================] - 9s 61ms/step - loss: 0.1223 - accuracy: 0.9603 - val_loss: 0.3863 - val_accuracy: 0.9017
Epoch 20/50
142/142 [==============================] - 9s 61ms/step - loss: 0.1185 - accuracy: 0.9628 - val_loss: 0.3960 - val_accuracy: 0.8950
Epoch 21/50
142/142 [==============================] - 9s 64ms/step - loss: 0.2190 - accuracy: 0.9415 - val_loss: 0.4390 - val_accuracy: 0.8923
Epoch 22/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1106 - accuracy: 0.9659 - val_loss: 0.5731 - val_accuracy: 0.8603
Epoch 23/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1639 - accuracy: 0.9515 - val_loss: 0.3799 - val_accuracy: 0.9060
Epoch 24/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0888 - accuracy: 0.9722 - val_loss: 0.3633 - val_accuracy: 0.9053
Epoch 25/50
142/142 [==============================] - 9s 61ms/step - loss: 0.1083 - accuracy: 0.9654 - val_loss: 0.3477 - val_accuracy: 0.9103
Epoch 26/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0859 - accuracy: 0.9742 - val_loss: 0.3861 - val_accuracy: 0.9047
Epoch 27/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0989 - accuracy: 0.9689 - val_loss: 0.3841 - val_accuracy: 0.9037
Epoch 28/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0787 - accuracy: 0.9760 - val_loss: 0.3694 - val_accuracy: 0.9087
Epoch 29/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0959 - accuracy: 0.9710 - val_loss: 0.3913 - val_accuracy: 0.9033
Epoch 30/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0947 - accuracy: 0.9715 - val_loss: 0.4551 - val_accuracy: 0.8867
Epoch 31/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0936 - accuracy: 0.9701 - val_loss: 0.4012 - val_accuracy: 0.9047
Epoch 32/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0738 - accuracy: 0.9767 - val_loss: 0.3894 - val_accuracy: 0.9063
Epoch 33/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0688 - accuracy: 0.9798 - val_loss: 0.4155 - val_accuracy: 0.9020
Epoch 34/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0927 - accuracy: 0.9719 - val_loss: 0.5343 - val_accuracy: 0.8717
Epoch 35/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0786 - accuracy: 0.9751 - val_loss: 0.4297 - val_accuracy: 0.8937
Epoch 36/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0539 - accuracy: 0.9831 - val_loss: 0.5410 - val_accuracy: 0.8947
Epoch 37/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0678 - accuracy: 0.9791 - val_loss: 0.4324 - val_accuracy: 0.9000
Epoch 38/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0704 - accuracy: 0.9788 - val_loss: 0.4510 - val_accuracy: 0.8977
Epoch 39/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0749 - accuracy: 0.9773 - val_loss: 0.4753 - val_accuracy: 0.9023
Epoch 40/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0793 - accuracy: 0.9780 - val_loss: 0.4187 - val_accuracy: 0.9020
Epoch 41/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0567 - accuracy: 0.9828 - val_loss: 0.4377 - val_accuracy: 0.8957
Epoch 42/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0656 - accuracy: 0.9811 - val_loss: 0.4882 - val_accuracy: 0.8877
Epoch 43/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0737 - accuracy: 0.9788 - val_loss: 0.3982 - val_accuracy: 0.9047
Epoch 44/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0644 - accuracy: 0.9816 - val_loss: 0.3743 - val_accuracy: 0.9117
Epoch 45/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0578 - accuracy: 0.9829 - val_loss: 0.4223 - val_accuracy: 0.9000
Epoch 46/50
142/142 [==============================] - 8s 60ms/step - loss: 0.0653 - accuracy: 0.9806 - val_loss: 0.3860 - val_accuracy: 0.9097
Epoch 47/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0798 - accuracy: 0.9772 - val_loss: 0.4044 - val_accuracy: 0.9000
Epoch 48/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0625 - accuracy: 0.9797 - val_loss: 0.4565 - val_accuracy: 0.9040
Epoch 49/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0902 - accuracy: 0.9760 - val_loss: 0.3985 - val_accuracy: 0.9013
Epoch 50/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0561 - accuracy: 0.9814 - val_loss: 0.4246 - val_accuracy: 0.9067
94/94 [==============================] - 1s 12ms/step - loss: 0.3849 - accuracy: 0.9007
CNN Error: 9.93%

Model 2 (After Augmentation)¶

In [9]:
model = Sequential()
model.add(RandomFlip('horizontal',input_shape=(128,128,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)

scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 12s 77ms/step - loss: 2.4354 - accuracy: 0.1736 - val_loss: 2.4967 - val_accuracy: 0.1700
Epoch 2/50
142/142 [==============================] - 11s 75ms/step - loss: 1.7627 - accuracy: 0.4311 - val_loss: 1.7003 - val_accuracy: 0.4480
Epoch 3/50
142/142 [==============================] - 11s 77ms/step - loss: 1.3141 - accuracy: 0.5839 - val_loss: 1.0935 - val_accuracy: 0.6497
Epoch 4/50
142/142 [==============================] - 11s 76ms/step - loss: 0.9700 - accuracy: 0.6942 - val_loss: 0.9332 - val_accuracy: 0.6910
Epoch 5/50
142/142 [==============================] - 11s 76ms/step - loss: 0.7765 - accuracy: 0.7542 - val_loss: 0.7807 - val_accuracy: 0.7547
Epoch 6/50
142/142 [==============================] - 10s 74ms/step - loss: 0.5799 - accuracy: 0.8168 - val_loss: 1.8620 - val_accuracy: 0.5240
Epoch 7/50
142/142 [==============================] - 10s 74ms/step - loss: 0.5268 - accuracy: 0.8368 - val_loss: 0.4625 - val_accuracy: 0.8533
Epoch 8/50
142/142 [==============================] - 11s 75ms/step - loss: 0.3856 - accuracy: 0.8784 - val_loss: 0.4316 - val_accuracy: 0.8697
Epoch 9/50
142/142 [==============================] - 11s 76ms/step - loss: 0.3518 - accuracy: 0.8887 - val_loss: 0.7987 - val_accuracy: 0.7660
Epoch 10/50
142/142 [==============================] - 11s 76ms/step - loss: 0.2549 - accuracy: 0.9227 - val_loss: 0.3841 - val_accuracy: 0.8873
Epoch 11/50
142/142 [==============================] - 11s 74ms/step - loss: 0.2260 - accuracy: 0.9283 - val_loss: 0.3795 - val_accuracy: 0.8860
Epoch 12/50
142/142 [==============================] - 11s 76ms/step - loss: 0.2091 - accuracy: 0.9334 - val_loss: 0.3814 - val_accuracy: 0.8890
Epoch 13/50
142/142 [==============================] - 11s 75ms/step - loss: 0.1782 - accuracy: 0.9412 - val_loss: 0.3704 - val_accuracy: 0.8963
Epoch 14/50
142/142 [==============================] - 11s 79ms/step - loss: 0.1539 - accuracy: 0.9521 - val_loss: 0.3339 - val_accuracy: 0.9003
Epoch 15/50
142/142 [==============================] - 11s 74ms/step - loss: 0.1465 - accuracy: 0.9551 - val_loss: 0.4129 - val_accuracy: 0.8890
Epoch 16/50
142/142 [==============================] - 11s 76ms/step - loss: 0.1332 - accuracy: 0.9569 - val_loss: 0.3310 - val_accuracy: 0.9110
Epoch 17/50
142/142 [==============================] - 11s 78ms/step - loss: 0.1205 - accuracy: 0.9617 - val_loss: 0.3317 - val_accuracy: 0.9147
Epoch 18/50
142/142 [==============================] - 11s 76ms/step - loss: 0.1203 - accuracy: 0.9634 - val_loss: 0.6004 - val_accuracy: 0.8460
Epoch 19/50
142/142 [==============================] - 11s 77ms/step - loss: 0.1636 - accuracy: 0.9506 - val_loss: 0.3618 - val_accuracy: 0.9083
Epoch 20/50
142/142 [==============================] - 11s 76ms/step - loss: 0.1198 - accuracy: 0.9642 - val_loss: 0.5207 - val_accuracy: 0.8667
Epoch 21/50
142/142 [==============================] - 11s 75ms/step - loss: 0.1175 - accuracy: 0.9626 - val_loss: 0.3672 - val_accuracy: 0.9117
Epoch 22/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0793 - accuracy: 0.9737 - val_loss: 0.5321 - val_accuracy: 0.8730
Epoch 23/50
142/142 [==============================] - 11s 77ms/step - loss: 0.1016 - accuracy: 0.9679 - val_loss: 0.4213 - val_accuracy: 0.8973
Epoch 24/50
142/142 [==============================] - 10s 72ms/step - loss: 0.0792 - accuracy: 0.9742 - val_loss: 0.4024 - val_accuracy: 0.9073
Epoch 25/50
142/142 [==============================] - 11s 75ms/step - loss: 0.1254 - accuracy: 0.9628 - val_loss: 0.5326 - val_accuracy: 0.8590
Epoch 26/50
142/142 [==============================] - 11s 77ms/step - loss: 0.0893 - accuracy: 0.9743 - val_loss: 0.3638 - val_accuracy: 0.9063
Epoch 27/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0661 - accuracy: 0.9785 - val_loss: 0.4164 - val_accuracy: 0.9017
Epoch 28/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0816 - accuracy: 0.9741 - val_loss: 0.3904 - val_accuracy: 0.9103
Epoch 29/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0643 - accuracy: 0.9807 - val_loss: 0.3791 - val_accuracy: 0.9097
Epoch 30/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0803 - accuracy: 0.9741 - val_loss: 0.3920 - val_accuracy: 0.9093
Epoch 31/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0568 - accuracy: 0.9811 - val_loss: 0.3658 - val_accuracy: 0.9133
Epoch 32/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0996 - accuracy: 0.9692 - val_loss: 0.3969 - val_accuracy: 0.9017
Epoch 33/50
142/142 [==============================] - 10s 73ms/step - loss: 0.0735 - accuracy: 0.9781 - val_loss: 0.3515 - val_accuracy: 0.9123
Epoch 34/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0582 - accuracy: 0.9813 - val_loss: 0.3369 - val_accuracy: 0.9177
Epoch 35/50
142/142 [==============================] - 11s 74ms/step - loss: 0.0646 - accuracy: 0.9798 - val_loss: 0.3445 - val_accuracy: 0.9207
Epoch 36/50
142/142 [==============================] - 10s 74ms/step - loss: 0.0625 - accuracy: 0.9811 - val_loss: 0.4162 - val_accuracy: 0.9047
Epoch 37/50
142/142 [==============================] - 11s 78ms/step - loss: 0.0763 - accuracy: 0.9777 - val_loss: 0.4031 - val_accuracy: 0.9003
Epoch 38/50
142/142 [==============================] - 11s 79ms/step - loss: 0.0513 - accuracy: 0.9836 - val_loss: 0.3725 - val_accuracy: 0.9213
Epoch 39/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0509 - accuracy: 0.9842 - val_loss: 0.4082 - val_accuracy: 0.9080
Epoch 40/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0709 - accuracy: 0.9786 - val_loss: 0.3815 - val_accuracy: 0.9100
Epoch 41/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0495 - accuracy: 0.9845 - val_loss: 0.3835 - val_accuracy: 0.9167
Epoch 42/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0656 - accuracy: 0.9811 - val_loss: 0.3476 - val_accuracy: 0.9097
Epoch 43/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0549 - accuracy: 0.9815 - val_loss: 0.4187 - val_accuracy: 0.9107
Epoch 44/50
142/142 [==============================] - 11s 76ms/step - loss: 0.0705 - accuracy: 0.9793 - val_loss: 0.4011 - val_accuracy: 0.9077
Epoch 45/50
142/142 [==============================] - 10s 74ms/step - loss: 0.0510 - accuracy: 0.9847 - val_loss: 0.3505 - val_accuracy: 0.9217
Epoch 46/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0516 - accuracy: 0.9837 - val_loss: 0.4049 - val_accuracy: 0.9090
Epoch 47/50
142/142 [==============================] - 10s 73ms/step - loss: 0.0526 - accuracy: 0.9835 - val_loss: 0.3953 - val_accuracy: 0.9137
Epoch 48/50
142/142 [==============================] - 11s 78ms/step - loss: 0.0440 - accuracy: 0.9867 - val_loss: 0.3651 - val_accuracy: 0.9233
Epoch 49/50
142/142 [==============================] - 11s 75ms/step - loss: 0.0531 - accuracy: 0.9833 - val_loss: 0.3761 - val_accuracy: 0.9157
Epoch 50/50
142/142 [==============================] - 11s 77ms/step - loss: 0.0602 - accuracy: 0.9813 - val_loss: 0.3972 - val_accuracy: 0.9013
94/94 [==============================] - 1s 10ms/step - loss: 0.3848 - accuracy: 0.9107
CNN Error: 8.93%

Random Flip improved model 2 accuracy by only 1% and about a similar validation score however the training time has also increased by 2 minutes. Upon weighing the trade off between time and accuracy, we will not implement it.¶

Model Improvement¶

We will further improve model 2 as it has a higher test and validation accuracy than model 1

1.Compare Activation Functions
2. Tuning Hyper-parameters
3. Learning Rate Scheduler

Comparing Activation Functions¶

In [8]:
def getModel(activation):
    model = Sequential()
    model.add(Conv2D(64, (3, 3), activation=activation,input_shape=(128,128,1)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(128, (3, 3), activation=activation))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Conv2D(256, (3, 3), activation=activation))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Flatten())

    model.add(Dense(512, activation=activation))
    model.add(Dropout(0.4))
    model.add(Dense(256, activation=activation))
    model.add(Dropout(0.4))
    model.add(Dense(15,activation='softmax'))

    return model

We will be comparing 'tanh', 'relu' and sigmoid and determine which one yields the best performance.¶

In [9]:
activations = ['tanh','relu','sigmoid']

results = {}

for function in activations:
    model = getModel(function)
    model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
    history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64)
    results[function] = history
Epoch 1/50
142/142 [==============================] - 15s 81ms/step - loss: 3.1779 - accuracy: 0.0824 - val_loss: 2.8255 - val_accuracy: 0.0667
Epoch 2/50
142/142 [==============================] - 11s 75ms/step - loss: 3.0432 - accuracy: 0.0835 - val_loss: 2.8813 - val_accuracy: 0.0667
Epoch 3/50
142/142 [==============================] - 11s 75ms/step - loss: 2.9391 - accuracy: 0.0888 - val_loss: 2.8347 - val_accuracy: 0.0667
Epoch 4/50
142/142 [==============================] - 11s 75ms/step - loss: 2.8840 - accuracy: 0.0830 - val_loss: 2.8496 - val_accuracy: 0.0667
Epoch 5/50
142/142 [==============================] - 11s 75ms/step - loss: 2.8283 - accuracy: 0.0878 - val_loss: 2.8539 - val_accuracy: 0.0667
Epoch 6/50
142/142 [==============================] - 11s 75ms/step - loss: 2.8025 - accuracy: 0.0845 - val_loss: 2.7991 - val_accuracy: 0.0667
Epoch 7/50
142/142 [==============================] - 11s 75ms/step - loss: 2.7690 - accuracy: 0.0846 - val_loss: 2.8351 - val_accuracy: 0.0667
Epoch 8/50
142/142 [==============================] - 11s 76ms/step - loss: 2.7449 - accuracy: 0.0911 - val_loss: 2.8389 - val_accuracy: 0.0667
Epoch 9/50
142/142 [==============================] - 11s 76ms/step - loss: 2.7219 - accuracy: 0.0946 - val_loss: 2.8136 - val_accuracy: 0.0667
Epoch 10/50
142/142 [==============================] - 11s 76ms/step - loss: 2.7157 - accuracy: 0.0898 - val_loss: 2.7881 - val_accuracy: 0.0667
Epoch 11/50
142/142 [==============================] - 11s 77ms/step - loss: 2.7034 - accuracy: 0.0870 - val_loss: 2.8619 - val_accuracy: 0.0667
Epoch 12/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6978 - accuracy: 0.0938 - val_loss: 2.8581 - val_accuracy: 0.0667
Epoch 13/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6949 - accuracy: 0.0873 - val_loss: 2.8733 - val_accuracy: 0.0667
Epoch 14/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6838 - accuracy: 0.0945 - val_loss: 2.8338 - val_accuracy: 0.0667
Epoch 15/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6843 - accuracy: 0.0896 - val_loss: 2.8522 - val_accuracy: 0.0667
Epoch 16/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6847 - accuracy: 0.0905 - val_loss: 2.7765 - val_accuracy: 0.0667
Epoch 17/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6804 - accuracy: 0.0926 - val_loss: 2.8217 - val_accuracy: 0.0667
Epoch 18/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6739 - accuracy: 0.0949 - val_loss: 2.8501 - val_accuracy: 0.0667
Epoch 19/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6824 - accuracy: 0.0976 - val_loss: 2.7888 - val_accuracy: 0.0667
Epoch 20/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6784 - accuracy: 0.0930 - val_loss: 2.8444 - val_accuracy: 0.0667
Epoch 21/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6725 - accuracy: 0.0973 - val_loss: 2.8007 - val_accuracy: 0.0667
Epoch 22/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6759 - accuracy: 0.0961 - val_loss: 2.8006 - val_accuracy: 0.0667
Epoch 23/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6730 - accuracy: 0.0884 - val_loss: 2.8282 - val_accuracy: 0.0667
Epoch 24/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6812 - accuracy: 0.0928 - val_loss: 2.8109 - val_accuracy: 0.0667
Epoch 25/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6700 - accuracy: 0.0928 - val_loss: 2.7876 - val_accuracy: 0.0667
Epoch 26/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6749 - accuracy: 0.0893 - val_loss: 2.7855 - val_accuracy: 0.0667
Epoch 27/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6721 - accuracy: 0.0947 - val_loss: 2.7954 - val_accuracy: 0.0667
Epoch 28/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6768 - accuracy: 0.0961 - val_loss: 2.7983 - val_accuracy: 0.0667
Epoch 29/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6691 - accuracy: 0.0937 - val_loss: 2.8047 - val_accuracy: 0.0667
Epoch 30/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6756 - accuracy: 0.0907 - val_loss: 2.8090 - val_accuracy: 0.0667
Epoch 31/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6810 - accuracy: 0.0963 - val_loss: 2.7982 - val_accuracy: 0.0667
Epoch 32/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6709 - accuracy: 0.1006 - val_loss: 2.8056 - val_accuracy: 0.0667
Epoch 33/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6706 - accuracy: 0.0940 - val_loss: 2.8224 - val_accuracy: 0.0667
Epoch 34/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6712 - accuracy: 0.0942 - val_loss: 2.8132 - val_accuracy: 0.0667
Epoch 35/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6756 - accuracy: 0.0966 - val_loss: 2.8159 - val_accuracy: 0.0667
Epoch 36/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6748 - accuracy: 0.0924 - val_loss: 2.8591 - val_accuracy: 0.0667
Epoch 37/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6755 - accuracy: 0.0877 - val_loss: 2.8266 - val_accuracy: 0.0667
Epoch 38/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6687 - accuracy: 0.0923 - val_loss: 2.8059 - val_accuracy: 0.0667
Epoch 39/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6744 - accuracy: 0.0956 - val_loss: 2.8020 - val_accuracy: 0.0667
Epoch 40/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6733 - accuracy: 0.0945 - val_loss: 2.8056 - val_accuracy: 0.0667
Epoch 41/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6685 - accuracy: 0.0948 - val_loss: 2.8337 - val_accuracy: 0.0667
Epoch 42/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6716 - accuracy: 0.0917 - val_loss: 2.8232 - val_accuracy: 0.0667
Epoch 43/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6774 - accuracy: 0.0951 - val_loss: 2.7868 - val_accuracy: 0.0667
Epoch 44/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6817 - accuracy: 0.0898 - val_loss: 2.8627 - val_accuracy: 0.0667
Epoch 45/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6753 - accuracy: 0.0871 - val_loss: 2.8153 - val_accuracy: 0.0667
Epoch 46/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6707 - accuracy: 0.0988 - val_loss: 2.8087 - val_accuracy: 0.0667
Epoch 47/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6766 - accuracy: 0.0885 - val_loss: 2.8139 - val_accuracy: 0.0667
Epoch 48/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6706 - accuracy: 0.0896 - val_loss: 2.8495 - val_accuracy: 0.0667
Epoch 49/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6748 - accuracy: 0.0917 - val_loss: 2.7844 - val_accuracy: 0.0667
Epoch 50/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6764 - accuracy: 0.0920 - val_loss: 2.7968 - val_accuracy: 0.0667
Epoch 1/50
142/142 [==============================] - 11s 69ms/step - loss: 2.4743 - accuracy: 0.1526 - val_loss: 2.3181 - val_accuracy: 0.2310
Epoch 2/50
142/142 [==============================] - 9s 63ms/step - loss: 1.9374 - accuracy: 0.3669 - val_loss: 1.7686 - val_accuracy: 0.4107
Epoch 3/50
142/142 [==============================] - 9s 64ms/step - loss: 1.3923 - accuracy: 0.5537 - val_loss: 1.1766 - val_accuracy: 0.6347
Epoch 4/50
142/142 [==============================] - 9s 63ms/step - loss: 1.0432 - accuracy: 0.6597 - val_loss: 1.5521 - val_accuracy: 0.5167
Epoch 5/50
142/142 [==============================] - 9s 64ms/step - loss: 0.8095 - accuracy: 0.7453 - val_loss: 0.6962 - val_accuracy: 0.7813
Epoch 6/50
142/142 [==============================] - 9s 63ms/step - loss: 0.5749 - accuracy: 0.8175 - val_loss: 0.6502 - val_accuracy: 0.8037
Epoch 7/50
142/142 [==============================] - 9s 63ms/step - loss: 0.4514 - accuracy: 0.8553 - val_loss: 0.4647 - val_accuracy: 0.8603
Epoch 8/50
142/142 [==============================] - 9s 63ms/step - loss: 0.3668 - accuracy: 0.8829 - val_loss: 0.3923 - val_accuracy: 0.8800
Epoch 9/50
142/142 [==============================] - 9s 63ms/step - loss: 0.3059 - accuracy: 0.9043 - val_loss: 0.6138 - val_accuracy: 0.8080
Epoch 10/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2650 - accuracy: 0.9149 - val_loss: 0.3973 - val_accuracy: 0.8827
Epoch 11/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2268 - accuracy: 0.9287 - val_loss: 0.3883 - val_accuracy: 0.8883
Epoch 12/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1845 - accuracy: 0.9421 - val_loss: 0.4137 - val_accuracy: 0.8790
Epoch 13/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1586 - accuracy: 0.9471 - val_loss: 0.3961 - val_accuracy: 0.8903
Epoch 14/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1435 - accuracy: 0.9531 - val_loss: 0.3455 - val_accuracy: 0.9020
Epoch 15/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1261 - accuracy: 0.9584 - val_loss: 0.4457 - val_accuracy: 0.8813
Epoch 16/50
142/142 [==============================] - 9s 64ms/step - loss: 0.1188 - accuracy: 0.9638 - val_loss: 0.3198 - val_accuracy: 0.9060
Epoch 17/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1320 - accuracy: 0.9618 - val_loss: 0.4289 - val_accuracy: 0.8857
Epoch 18/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0930 - accuracy: 0.9715 - val_loss: 0.3472 - val_accuracy: 0.9073
Epoch 19/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0989 - accuracy: 0.9674 - val_loss: 0.7174 - val_accuracy: 0.8347
Epoch 20/50
142/142 [==============================] - 9s 64ms/step - loss: 0.1221 - accuracy: 0.9615 - val_loss: 0.4036 - val_accuracy: 0.8983
Epoch 21/50
142/142 [==============================] - 9s 64ms/step - loss: 0.1058 - accuracy: 0.9669 - val_loss: 0.3465 - val_accuracy: 0.9083
Epoch 22/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0899 - accuracy: 0.9715 - val_loss: 0.3564 - val_accuracy: 0.9073
Epoch 23/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0822 - accuracy: 0.9722 - val_loss: 0.3608 - val_accuracy: 0.9073
Epoch 24/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0752 - accuracy: 0.9744 - val_loss: 0.4015 - val_accuracy: 0.9013
Epoch 25/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0664 - accuracy: 0.9775 - val_loss: 0.4032 - val_accuracy: 0.9053
Epoch 26/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0908 - accuracy: 0.9723 - val_loss: 0.3916 - val_accuracy: 0.8953
Epoch 27/50
142/142 [==============================] - 9s 64ms/step - loss: 0.1347 - accuracy: 0.9619 - val_loss: 0.3726 - val_accuracy: 0.9047
Epoch 28/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0667 - accuracy: 0.9795 - val_loss: 0.3618 - val_accuracy: 0.9130
Epoch 29/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0664 - accuracy: 0.9794 - val_loss: 0.4402 - val_accuracy: 0.8953
Epoch 30/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0666 - accuracy: 0.9802 - val_loss: 0.5514 - val_accuracy: 0.8717
Epoch 31/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0669 - accuracy: 0.9790 - val_loss: 0.4194 - val_accuracy: 0.8997
Epoch 32/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0580 - accuracy: 0.9821 - val_loss: 0.3875 - val_accuracy: 0.9010
Epoch 33/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0520 - accuracy: 0.9833 - val_loss: 0.3471 - val_accuracy: 0.9147
Epoch 34/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0677 - accuracy: 0.9805 - val_loss: 0.5559 - val_accuracy: 0.8757
Epoch 35/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0710 - accuracy: 0.9788 - val_loss: 0.4524 - val_accuracy: 0.8940
Epoch 36/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0721 - accuracy: 0.9782 - val_loss: 0.4399 - val_accuracy: 0.8990
Epoch 37/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0772 - accuracy: 0.9757 - val_loss: 0.5327 - val_accuracy: 0.8710
Epoch 38/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0608 - accuracy: 0.9817 - val_loss: 0.3707 - val_accuracy: 0.9100
Epoch 39/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0609 - accuracy: 0.9832 - val_loss: 0.4430 - val_accuracy: 0.9027
Epoch 40/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0494 - accuracy: 0.9850 - val_loss: 0.4192 - val_accuracy: 0.9067
Epoch 41/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0588 - accuracy: 0.9827 - val_loss: 0.3821 - val_accuracy: 0.9120
Epoch 42/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0624 - accuracy: 0.9801 - val_loss: 0.3585 - val_accuracy: 0.9110
Epoch 43/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0518 - accuracy: 0.9834 - val_loss: 0.4508 - val_accuracy: 0.8977
Epoch 44/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0594 - accuracy: 0.9815 - val_loss: 0.5478 - val_accuracy: 0.8887
Epoch 45/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0566 - accuracy: 0.9831 - val_loss: 0.4037 - val_accuracy: 0.9047
Epoch 46/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0529 - accuracy: 0.9832 - val_loss: 0.4114 - val_accuracy: 0.9103
Epoch 47/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0493 - accuracy: 0.9860 - val_loss: 0.4272 - val_accuracy: 0.9113
Epoch 48/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0338 - accuracy: 0.9897 - val_loss: 0.4186 - val_accuracy: 0.9073
Epoch 49/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0438 - accuracy: 0.9874 - val_loss: 0.3655 - val_accuracy: 0.9143
Epoch 50/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0621 - accuracy: 0.9805 - val_loss: 0.4698 - val_accuracy: 0.9027
Epoch 1/50
142/142 [==============================] - 12s 80ms/step - loss: 2.7199 - accuracy: 0.0948 - val_loss: 2.7788 - val_accuracy: 0.0667
Epoch 2/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6547 - accuracy: 0.0940 - val_loss: 2.7786 - val_accuracy: 0.0667
Epoch 3/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6446 - accuracy: 0.0953 - val_loss: 2.7596 - val_accuracy: 0.0667
Epoch 4/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6453 - accuracy: 0.0961 - val_loss: 2.7632 - val_accuracy: 0.0667
Epoch 5/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6436 - accuracy: 0.0985 - val_loss: 2.7653 - val_accuracy: 0.0667
Epoch 6/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6436 - accuracy: 0.0978 - val_loss: 2.7690 - val_accuracy: 0.0667
Epoch 7/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6396 - accuracy: 0.1017 - val_loss: 2.7539 - val_accuracy: 0.0667
Epoch 8/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6428 - accuracy: 0.0992 - val_loss: 2.7769 - val_accuracy: 0.0667
Epoch 9/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6426 - accuracy: 0.1011 - val_loss: 2.7762 - val_accuracy: 0.0667
Epoch 10/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6405 - accuracy: 0.1038 - val_loss: 2.7651 - val_accuracy: 0.0667
Epoch 11/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6403 - accuracy: 0.1045 - val_loss: 2.7712 - val_accuracy: 0.0667
Epoch 12/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6405 - accuracy: 0.1028 - val_loss: 2.7651 - val_accuracy: 0.0667
Epoch 13/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6389 - accuracy: 0.1029 - val_loss: 2.7682 - val_accuracy: 0.0667
Epoch 14/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6406 - accuracy: 0.0998 - val_loss: 2.7742 - val_accuracy: 0.0667
Epoch 15/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6391 - accuracy: 0.1031 - val_loss: 2.8017 - val_accuracy: 0.0667
Epoch 16/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6400 - accuracy: 0.1039 - val_loss: 2.7892 - val_accuracy: 0.0667
Epoch 17/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6391 - accuracy: 0.1041 - val_loss: 2.7781 - val_accuracy: 0.0667
Epoch 18/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6400 - accuracy: 0.1053 - val_loss: 2.7907 - val_accuracy: 0.0667
Epoch 19/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6387 - accuracy: 0.1052 - val_loss: 2.8150 - val_accuracy: 0.0667
Epoch 20/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6395 - accuracy: 0.1042 - val_loss: 2.7740 - val_accuracy: 0.0667
Epoch 21/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6388 - accuracy: 0.1046 - val_loss: 2.7785 - val_accuracy: 0.0667
Epoch 22/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6374 - accuracy: 0.1051 - val_loss: 2.7920 - val_accuracy: 0.0667
Epoch 23/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6395 - accuracy: 0.1046 - val_loss: 2.7744 - val_accuracy: 0.0667
Epoch 24/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6383 - accuracy: 0.1057 - val_loss: 2.7775 - val_accuracy: 0.0667
Epoch 25/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6374 - accuracy: 0.1071 - val_loss: 2.7784 - val_accuracy: 0.0667
Epoch 26/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6382 - accuracy: 0.1037 - val_loss: 2.7811 - val_accuracy: 0.0667
Epoch 27/50
142/142 [==============================] - 11s 78ms/step - loss: 2.6387 - accuracy: 0.1063 - val_loss: 2.7674 - val_accuracy: 0.0667
Epoch 28/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6386 - accuracy: 0.1022 - val_loss: 2.7702 - val_accuracy: 0.0667
Epoch 29/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6393 - accuracy: 0.1062 - val_loss: 2.7728 - val_accuracy: 0.0667
Epoch 30/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6384 - accuracy: 0.1052 - val_loss: 2.7879 - val_accuracy: 0.0667
Epoch 31/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6389 - accuracy: 0.1029 - val_loss: 2.7884 - val_accuracy: 0.0667
Epoch 32/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6373 - accuracy: 0.1076 - val_loss: 2.7837 - val_accuracy: 0.0667
Epoch 33/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6379 - accuracy: 0.1051 - val_loss: 2.7896 - val_accuracy: 0.0667
Epoch 34/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6380 - accuracy: 0.1062 - val_loss: 2.7637 - val_accuracy: 0.0667
Epoch 35/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6378 - accuracy: 0.1058 - val_loss: 2.7813 - val_accuracy: 0.0667
Epoch 36/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6377 - accuracy: 0.1053 - val_loss: 2.7831 - val_accuracy: 0.0667
Epoch 37/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6365 - accuracy: 0.1032 - val_loss: 2.7767 - val_accuracy: 0.0667
Epoch 38/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6375 - accuracy: 0.1047 - val_loss: 2.7772 - val_accuracy: 0.0667
Epoch 39/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6372 - accuracy: 0.1057 - val_loss: 2.7721 - val_accuracy: 0.0667
Epoch 40/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6370 - accuracy: 0.1040 - val_loss: 2.7793 - val_accuracy: 0.0667
Epoch 41/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6373 - accuracy: 0.1058 - val_loss: 2.7682 - val_accuracy: 0.0667
Epoch 42/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6368 - accuracy: 0.1042 - val_loss: 2.7806 - val_accuracy: 0.0667
Epoch 43/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6376 - accuracy: 0.1058 - val_loss: 2.7785 - val_accuracy: 0.0667
Epoch 44/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6377 - accuracy: 0.1061 - val_loss: 2.7691 - val_accuracy: 0.0667
Epoch 45/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6364 - accuracy: 0.1048 - val_loss: 2.7654 - val_accuracy: 0.0667
Epoch 46/50
142/142 [==============================] - 11s 77ms/step - loss: 2.6365 - accuracy: 0.1059 - val_loss: 2.7712 - val_accuracy: 0.0667
Epoch 47/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6373 - accuracy: 0.1056 - val_loss: 2.7793 - val_accuracy: 0.0667
Epoch 48/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6365 - accuracy: 0.1058 - val_loss: 2.7843 - val_accuracy: 0.0667
Epoch 49/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6364 - accuracy: 0.1057 - val_loss: 2.7951 - val_accuracy: 0.0667
Epoch 50/50
142/142 [==============================] - 11s 76ms/step - loss: 2.6371 - accuracy: 0.1050 - val_loss: 2.7739 - val_accuracy: 0.0667
In [10]:
valLost = {k:v.history['val_accuracy'] for k,v in results.items()}
valLostCurve = pd.DataFrame(valLost)
valLostCurve.plot()
plt.title('Validation Accuracy')
plt.show()

Activation 'relu' will be used.¶

Hyper parameter tuning¶

I will be doing hyper parameter tuning with one less layer to address the Resource Exhaustion Error. We will use this to determine the best optimizer
Before deciding to tune with one less layer, I have tried reducing the batch size, narrowing down the parameter to tune and using a smaller epoch.

In [12]:
def createModel(optimizer):
    model = Sequential()
    model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(128, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Conv2D(256, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(256, activation='relu'))
    model.add(Dropout(0.4))
    model.add(Dense(15,activation='softmax'))
    model.compile(loss='categorical_crossentropy',optimizer=optimizer, metrics=['accuracy'])
    return model
In [13]:
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
from tensorflow.keras.layers import MaxPooling2D,GlobalAveragePooling2D
from sklearn.model_selection import RandomizedSearchCV, KFold
model = KerasClassifier(build_fn=createModel,epochs=30,batch_size=16)
paramGrid = {'optimizer':['rmsprop','adam']}
randomSearch = RandomizedSearchCV(model,param_distributions = paramGrid, cv=2)
randomSearchRes = randomSearch.fit(X_train,y_train)
print(f"Best Score: {randomSearchRes.best_score_} Best Params: {randomSearchRes.best_params_}")
C:\Users\kieny\AppData\Local\Temp\ipykernel_41576\2128538617.py:4: DeprecationWarning: KerasClassifier is deprecated, use Sci-Keras (https://github.com/adriangb/scikeras) instead. See https://www.adriangb.com/scikeras/stable/migration.html for help migrating.
  model = KerasClassifier(build_fn=createModel,epochs=30,batch_size=16)
Epoch 1/30
283/283 [==============================] - 7s 22ms/step - loss: 2.5719 - accuracy: 0.2242
Epoch 2/30
283/283 [==============================] - 6s 21ms/step - loss: 1.7125 - accuracy: 0.4703
Epoch 3/30
283/283 [==============================] - 6s 21ms/step - loss: 1.2255 - accuracy: 0.6214
Epoch 4/30
283/283 [==============================] - 6s 20ms/step - loss: 0.9365 - accuracy: 0.7233
Epoch 5/30
283/283 [==============================] - 6s 21ms/step - loss: 0.6763 - accuracy: 0.7933
Epoch 6/30
283/283 [==============================] - 6s 22ms/step - loss: 0.5224 - accuracy: 0.8482
Epoch 7/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3989 - accuracy: 0.8768
Epoch 8/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3332 - accuracy: 0.8979
Epoch 9/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2945 - accuracy: 0.9140
Epoch 10/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2890 - accuracy: 0.9185
Epoch 11/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2859 - accuracy: 0.9276
Epoch 12/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2395 - accuracy: 0.9320
Epoch 13/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2315 - accuracy: 0.9426
Epoch 14/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2588 - accuracy: 0.9375
Epoch 15/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2186 - accuracy: 0.9386
Epoch 16/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2755 - accuracy: 0.9360
Epoch 17/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3063 - accuracy: 0.9384
Epoch 18/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2723 - accuracy: 0.9358
Epoch 19/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2827 - accuracy: 0.9346
Epoch 20/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2639 - accuracy: 0.9327
Epoch 21/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3021 - accuracy: 0.9327
Epoch 22/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2949 - accuracy: 0.9309
Epoch 23/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3540 - accuracy: 0.9327
Epoch 24/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3605 - accuracy: 0.9276
Epoch 25/30
283/283 [==============================] - 6s 21ms/step - loss: 0.4070 - accuracy: 0.9225
Epoch 26/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3766 - accuracy: 0.9140
Epoch 27/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3263 - accuracy: 0.9183
Epoch 28/30
283/283 [==============================] - 6s 22ms/step - loss: 0.4635 - accuracy: 0.9136
Epoch 29/30
283/283 [==============================] - 6s 22ms/step - loss: 0.3446 - accuracy: 0.9200
Epoch 30/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3824 - accuracy: 0.9180
283/283 [==============================] - 2s 7ms/step - loss: 1.9006 - accuracy: 0.7452
Epoch 1/30
283/283 [==============================] - 7s 21ms/step - loss: 2.5582 - accuracy: 0.2140
Epoch 2/30
283/283 [==============================] - 6s 21ms/step - loss: 1.7851 - accuracy: 0.4404
Epoch 3/30
283/283 [==============================] - 6s 21ms/step - loss: 1.2744 - accuracy: 0.5990
Epoch 4/30
283/283 [==============================] - 6s 21ms/step - loss: 0.9637 - accuracy: 0.6963
Epoch 5/30
283/283 [==============================] - 6s 21ms/step - loss: 0.7250 - accuracy: 0.7763
Epoch 6/30
283/283 [==============================] - 6s 21ms/step - loss: 0.5424 - accuracy: 0.8381
Epoch 7/30
283/283 [==============================] - 6s 21ms/step - loss: 0.4458 - accuracy: 0.8638
Epoch 8/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3441 - accuracy: 0.8934
Epoch 9/30
283/283 [==============================] - 6s 20ms/step - loss: 0.3262 - accuracy: 0.9030
Epoch 10/30
283/283 [==============================] - 6s 20ms/step - loss: 0.2715 - accuracy: 0.9149
Epoch 11/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2769 - accuracy: 0.9198
Epoch 12/30
283/283 [==============================] - 6s 22ms/step - loss: 0.2517 - accuracy: 0.9296
Epoch 13/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2074 - accuracy: 0.9415
Epoch 14/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2361 - accuracy: 0.9371
Epoch 15/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2192 - accuracy: 0.9440
Epoch 16/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2918 - accuracy: 0.9351
Epoch 17/30
283/283 [==============================] - 6s 22ms/step - loss: 0.2508 - accuracy: 0.9335
Epoch 18/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2515 - accuracy: 0.9366
Epoch 19/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2727 - accuracy: 0.9340
Epoch 20/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2728 - accuracy: 0.9369
Epoch 21/30
283/283 [==============================] - 6s 21ms/step - loss: 0.2843 - accuracy: 0.9307
Epoch 22/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3033 - accuracy: 0.9273
Epoch 23/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3538 - accuracy: 0.9238
Epoch 24/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3506 - accuracy: 0.9269
Epoch 25/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3593 - accuracy: 0.9231
Epoch 26/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3439 - accuracy: 0.9229
Epoch 27/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3218 - accuracy: 0.9278
Epoch 28/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3095 - accuracy: 0.9307
Epoch 29/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3774 - accuracy: 0.9194
Epoch 30/30
283/283 [==============================] - 6s 21ms/step - loss: 0.3735 - accuracy: 0.9198
283/283 [==============================] - 2s 6ms/step - loss: 1.3423 - accuracy: 0.7988
Epoch 1/30
283/283 [==============================] - 6s 18ms/step - loss: 2.4059 - accuracy: 0.2140
Epoch 2/30
283/283 [==============================] - 5s 18ms/step - loss: 1.7412 - accuracy: 0.4468
Epoch 3/30
283/283 [==============================] - 5s 18ms/step - loss: 1.3672 - accuracy: 0.5700
Epoch 4/30
283/283 [==============================] - 5s 18ms/step - loss: 1.0277 - accuracy: 0.6768
Epoch 5/30
283/283 [==============================] - 5s 18ms/step - loss: 0.7481 - accuracy: 0.7506
Epoch 6/30
283/283 [==============================] - 5s 18ms/step - loss: 0.5564 - accuracy: 0.8141
Epoch 7/30
283/283 [==============================] - 5s 18ms/step - loss: 0.4246 - accuracy: 0.8600
Epoch 8/30
283/283 [==============================] - 5s 18ms/step - loss: 0.3461 - accuracy: 0.8901
Epoch 9/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2880 - accuracy: 0.9061
Epoch 10/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2538 - accuracy: 0.9169
Epoch 11/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2116 - accuracy: 0.9276
Epoch 12/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2149 - accuracy: 0.9315
Epoch 13/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1756 - accuracy: 0.9386
Epoch 14/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1505 - accuracy: 0.9475
Epoch 15/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1575 - accuracy: 0.9530
Epoch 16/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1400 - accuracy: 0.9572
Epoch 17/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1461 - accuracy: 0.9508
Epoch 18/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1099 - accuracy: 0.9637
Epoch 19/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1424 - accuracy: 0.9504
Epoch 20/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1492 - accuracy: 0.9517
Epoch 21/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1035 - accuracy: 0.9677
Epoch 22/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1235 - accuracy: 0.9628
Epoch 23/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0885 - accuracy: 0.9719
Epoch 24/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1606 - accuracy: 0.9537
Epoch 25/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0987 - accuracy: 0.9690
Epoch 26/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0718 - accuracy: 0.9772
Epoch 27/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1015 - accuracy: 0.9679
Epoch 28/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0838 - accuracy: 0.9739
Epoch 29/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1036 - accuracy: 0.9677
Epoch 30/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0730 - accuracy: 0.9765
283/283 [==============================] - 2s 6ms/step - loss: 1.0131 - accuracy: 0.8059
Epoch 1/30
283/283 [==============================] - 6s 19ms/step - loss: 2.4706 - accuracy: 0.1910
Epoch 2/30
283/283 [==============================] - 5s 19ms/step - loss: 1.8455 - accuracy: 0.4129
Epoch 3/30
283/283 [==============================] - 5s 19ms/step - loss: 1.5003 - accuracy: 0.5233
Epoch 4/30
283/283 [==============================] - 5s 19ms/step - loss: 1.1492 - accuracy: 0.6305
Epoch 5/30
283/283 [==============================] - 5s 19ms/step - loss: 0.8667 - accuracy: 0.7187
Epoch 6/30
283/283 [==============================] - 5s 19ms/step - loss: 0.6972 - accuracy: 0.7685
Epoch 7/30
283/283 [==============================] - 5s 19ms/step - loss: 0.5315 - accuracy: 0.8223
Epoch 8/30
283/283 [==============================] - 5s 19ms/step - loss: 0.4382 - accuracy: 0.8551
Epoch 9/30
283/283 [==============================] - 5s 18ms/step - loss: 0.3848 - accuracy: 0.8742
Epoch 10/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2926 - accuracy: 0.9016
Epoch 11/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2824 - accuracy: 0.9070
Epoch 12/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2222 - accuracy: 0.9269
Epoch 13/30
283/283 [==============================] - 5s 18ms/step - loss: 0.2002 - accuracy: 0.9360
Epoch 14/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1866 - accuracy: 0.9366
Epoch 15/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1711 - accuracy: 0.9400
Epoch 16/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1994 - accuracy: 0.9358
Epoch 17/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1803 - accuracy: 0.9406
Epoch 18/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1685 - accuracy: 0.9442
Epoch 19/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1199 - accuracy: 0.9575
Epoch 20/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1322 - accuracy: 0.9541
Epoch 21/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1472 - accuracy: 0.9513
Epoch 22/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1167 - accuracy: 0.9572
Epoch 23/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0884 - accuracy: 0.9716
Epoch 24/30
283/283 [==============================] - 5s 19ms/step - loss: 0.1213 - accuracy: 0.9599
Epoch 25/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1076 - accuracy: 0.9623
Epoch 26/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1200 - accuracy: 0.9626
Epoch 27/30
283/283 [==============================] - 5s 18ms/step - loss: 0.1090 - accuracy: 0.9623
Epoch 28/30
283/283 [==============================] - 5s 18ms/step - loss: 0.0982 - accuracy: 0.9670
Epoch 29/30
283/283 [==============================] - 5s 17ms/step - loss: 0.1023 - accuracy: 0.9665
Epoch 30/30
283/283 [==============================] - 5s 17ms/step - loss: 0.1343 - accuracy: 0.9584
283/283 [==============================] - 2s 6ms/step - loss: 0.8429 - accuracy: 0.8210
Epoch 1/30
565/565 [==============================] - 10s 18ms/step - loss: 2.1279 - accuracy: 0.3033
Epoch 2/30
565/565 [==============================] - 10s 17ms/step - loss: 1.3760 - accuracy: 0.5594
Epoch 3/30
565/565 [==============================] - 10s 18ms/step - loss: 1.0042 - accuracy: 0.6799
Epoch 4/30
565/565 [==============================] - 10s 18ms/step - loss: 0.7333 - accuracy: 0.7683
Epoch 5/30
565/565 [==============================] - 10s 18ms/step - loss: 0.5722 - accuracy: 0.8108
Epoch 6/30
565/565 [==============================] - 10s 18ms/step - loss: 0.4553 - accuracy: 0.8480
Epoch 7/30
565/565 [==============================] - 10s 18ms/step - loss: 0.3767 - accuracy: 0.8808
Epoch 8/30
565/565 [==============================] - 10s 18ms/step - loss: 0.3203 - accuracy: 0.8928
Epoch 9/30
565/565 [==============================] - 10s 18ms/step - loss: 0.2926 - accuracy: 0.9035
Epoch 10/30
565/565 [==============================] - 10s 18ms/step - loss: 0.2518 - accuracy: 0.9196
Epoch 11/30
565/565 [==============================] - 10s 18ms/step - loss: 0.2363 - accuracy: 0.9217
Epoch 12/30
565/565 [==============================] - 10s 18ms/step - loss: 0.2226 - accuracy: 0.9279
Epoch 13/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1788 - accuracy: 0.9387
Epoch 14/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1946 - accuracy: 0.9353
Epoch 15/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1764 - accuracy: 0.9380
Epoch 16/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1639 - accuracy: 0.9488
Epoch 17/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1409 - accuracy: 0.9518
Epoch 18/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1439 - accuracy: 0.9527
Epoch 19/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1468 - accuracy: 0.9505
Epoch 20/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1504 - accuracy: 0.9508
Epoch 21/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1120 - accuracy: 0.9618
Epoch 22/30
565/565 [==============================] - 10s 17ms/step - loss: 0.1155 - accuracy: 0.9613
Epoch 23/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1184 - accuracy: 0.9642
Epoch 24/30
565/565 [==============================] - 10s 17ms/step - loss: 0.1289 - accuracy: 0.9578
Epoch 25/30
565/565 [==============================] - 11s 19ms/step - loss: 0.0913 - accuracy: 0.9673
Epoch 26/30
565/565 [==============================] - 10s 18ms/step - loss: 0.1220 - accuracy: 0.9619
Epoch 27/30
565/565 [==============================] - 11s 19ms/step - loss: 0.1101 - accuracy: 0.9647
Epoch 28/30
565/565 [==============================] - 10s 17ms/step - loss: 0.1104 - accuracy: 0.9654
Epoch 29/30
565/565 [==============================] - 10s 17ms/step - loss: 0.0867 - accuracy: 0.9702
Epoch 30/30
565/565 [==============================] - 10s 18ms/step - loss: 0.0902 - accuracy: 0.9689
Best Score: 0.8134692311286926 Best Params: {'optimizer': 'adam'}

We will be using the optimizer 'adam'¶

Learning Rate Scheduler¶

Now we will add learning rate scheduler to optimize the training and enhance the model's performance¶

In [12]:
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<15:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

callback = LearningRateScheduler(scheduleLR)
history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64,callbacks=[callback])
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 10s 64ms/step - loss: 2.4743 - accuracy: 0.1683 - val_loss: 2.0606 - val_accuracy: 0.3423 - lr: 0.0010
Epoch 2/50
142/142 [==============================] - 9s 61ms/step - loss: 1.7633 - accuracy: 0.4335 - val_loss: 1.5273 - val_accuracy: 0.4917 - lr: 0.0010
Epoch 3/50
142/142 [==============================] - 9s 61ms/step - loss: 1.3556 - accuracy: 0.5748 - val_loss: 1.0579 - val_accuracy: 0.6690 - lr: 0.0010
Epoch 4/50
142/142 [==============================] - 9s 62ms/step - loss: 1.0224 - accuracy: 0.6693 - val_loss: 1.3213 - val_accuracy: 0.5757 - lr: 0.0010
Epoch 5/50
142/142 [==============================] - 9s 62ms/step - loss: 0.8463 - accuracy: 0.7364 - val_loss: 0.7001 - val_accuracy: 0.7873 - lr: 0.0010
Epoch 6/50
142/142 [==============================] - 9s 63ms/step - loss: 0.6485 - accuracy: 0.7910 - val_loss: 0.5612 - val_accuracy: 0.8347 - lr: 0.0010
Epoch 7/50
142/142 [==============================] - 9s 64ms/step - loss: 0.5161 - accuracy: 0.8314 - val_loss: 0.5537 - val_accuracy: 0.8300 - lr: 0.0010
Epoch 8/50
142/142 [==============================] - 9s 65ms/step - loss: 0.4557 - accuracy: 0.8557 - val_loss: 0.5652 - val_accuracy: 0.8343 - lr: 0.0010
Epoch 9/50
142/142 [==============================] - 9s 64ms/step - loss: 0.3735 - accuracy: 0.8825 - val_loss: 0.4173 - val_accuracy: 0.8687 - lr: 0.0010
Epoch 10/50
142/142 [==============================] - 9s 63ms/step - loss: 0.3415 - accuracy: 0.8931 - val_loss: 0.3641 - val_accuracy: 0.8907 - lr: 0.0010
Epoch 11/50
142/142 [==============================] - 9s 62ms/step - loss: 0.2662 - accuracy: 0.9137 - val_loss: 0.6715 - val_accuracy: 0.8013 - lr: 0.0010
Epoch 12/50
142/142 [==============================] - 9s 63ms/step - loss: 0.2388 - accuracy: 0.9222 - val_loss: 0.4036 - val_accuracy: 0.8830 - lr: 0.0010
Epoch 13/50
142/142 [==============================] - 9s 66ms/step - loss: 0.2205 - accuracy: 0.9301 - val_loss: 0.4045 - val_accuracy: 0.8857 - lr: 0.0010
Epoch 14/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1875 - accuracy: 0.9430 - val_loss: 0.4116 - val_accuracy: 0.8843 - lr: 0.0010
Epoch 15/50
142/142 [==============================] - 9s 63ms/step - loss: 0.1909 - accuracy: 0.9394 - val_loss: 0.4206 - val_accuracy: 0.8810 - lr: 0.0010
Epoch 16/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1729 - accuracy: 0.9464 - val_loss: 0.6512 - val_accuracy: 0.8200 - lr: 9.0484e-04
Epoch 17/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1475 - accuracy: 0.9541 - val_loss: 0.3913 - val_accuracy: 0.8950 - lr: 8.1873e-04
Epoch 18/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1138 - accuracy: 0.9626 - val_loss: 0.3330 - val_accuracy: 0.9113 - lr: 7.4082e-04
Epoch 19/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1038 - accuracy: 0.9668 - val_loss: 0.3599 - val_accuracy: 0.9053 - lr: 6.7032e-04
Epoch 20/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0943 - accuracy: 0.9682 - val_loss: 0.3645 - val_accuracy: 0.9087 - lr: 6.0653e-04
Epoch 21/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0824 - accuracy: 0.9726 - val_loss: 0.3356 - val_accuracy: 0.9150 - lr: 5.4881e-04
Epoch 22/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0706 - accuracy: 0.9772 - val_loss: 0.4019 - val_accuracy: 0.9043 - lr: 4.9659e-04
Epoch 23/50
142/142 [==============================] - 9s 67ms/step - loss: 0.0602 - accuracy: 0.9801 - val_loss: 0.3437 - val_accuracy: 0.9133 - lr: 4.4933e-04
Epoch 24/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0589 - accuracy: 0.9815 - val_loss: 0.3875 - val_accuracy: 0.9107 - lr: 4.0657e-04
Epoch 25/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0605 - accuracy: 0.9808 - val_loss: 0.3225 - val_accuracy: 0.9233 - lr: 3.6788e-04
Epoch 26/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0452 - accuracy: 0.9843 - val_loss: 0.3303 - val_accuracy: 0.9267 - lr: 3.3287e-04
Epoch 27/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0447 - accuracy: 0.9856 - val_loss: 0.3996 - val_accuracy: 0.9123 - lr: 3.0119e-04
Epoch 28/50
142/142 [==============================] - 9s 67ms/step - loss: 0.0434 - accuracy: 0.9864 - val_loss: 0.3407 - val_accuracy: 0.9223 - lr: 2.7253e-04
Epoch 29/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0481 - accuracy: 0.9840 - val_loss: 0.3388 - val_accuracy: 0.9207 - lr: 2.4660e-04
Epoch 30/50
142/142 [==============================] - 10s 67ms/step - loss: 0.0346 - accuracy: 0.9900 - val_loss: 0.3580 - val_accuracy: 0.9203 - lr: 2.2313e-04
Epoch 31/50
142/142 [==============================] - 9s 67ms/step - loss: 0.0361 - accuracy: 0.9874 - val_loss: 0.3168 - val_accuracy: 0.9273 - lr: 2.0190e-04
Epoch 32/50
142/142 [==============================] - 10s 67ms/step - loss: 0.0294 - accuracy: 0.9905 - val_loss: 0.3501 - val_accuracy: 0.9270 - lr: 1.8268e-04
Epoch 33/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0375 - accuracy: 0.9889 - val_loss: 0.3529 - val_accuracy: 0.9267 - lr: 1.6530e-04
Epoch 34/50
142/142 [==============================] - 9s 67ms/step - loss: 0.0339 - accuracy: 0.9888 - val_loss: 0.3528 - val_accuracy: 0.9227 - lr: 1.4957e-04
Epoch 35/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0399 - accuracy: 0.9872 - val_loss: 0.3472 - val_accuracy: 0.9240 - lr: 1.3534e-04
Epoch 36/50
142/142 [==============================] - 10s 67ms/step - loss: 0.0321 - accuracy: 0.9889 - val_loss: 0.3367 - val_accuracy: 0.9263 - lr: 1.2246e-04
Epoch 37/50
142/142 [==============================] - 10s 67ms/step - loss: 0.0291 - accuracy: 0.9914 - val_loss: 0.3421 - val_accuracy: 0.9247 - lr: 1.1080e-04
Epoch 38/50
142/142 [==============================] - 10s 68ms/step - loss: 0.0303 - accuracy: 0.9915 - val_loss: 0.3404 - val_accuracy: 0.9283 - lr: 1.0026e-04
Epoch 39/50
142/142 [==============================] - 10s 67ms/step - loss: 0.0249 - accuracy: 0.9929 - val_loss: 0.3417 - val_accuracy: 0.9283 - lr: 9.0718e-05
Epoch 40/50
142/142 [==============================] - 9s 67ms/step - loss: 0.0302 - accuracy: 0.9893 - val_loss: 0.3393 - val_accuracy: 0.9263 - lr: 8.2085e-05
Epoch 41/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0259 - accuracy: 0.9921 - val_loss: 0.3494 - val_accuracy: 0.9257 - lr: 7.4273e-05
Epoch 42/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0271 - accuracy: 0.9914 - val_loss: 0.3431 - val_accuracy: 0.9290 - lr: 6.7205e-05
Epoch 43/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0232 - accuracy: 0.9925 - val_loss: 0.3500 - val_accuracy: 0.9283 - lr: 6.0810e-05
Epoch 44/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0257 - accuracy: 0.9920 - val_loss: 0.3330 - val_accuracy: 0.9287 - lr: 5.5023e-05
Epoch 45/50
142/142 [==============================] - 9s 67ms/step - loss: 0.0241 - accuracy: 0.9920 - val_loss: 0.3558 - val_accuracy: 0.9280 - lr: 4.9787e-05
Epoch 46/50
142/142 [==============================] - 10s 67ms/step - loss: 0.0246 - accuracy: 0.9920 - val_loss: 0.3513 - val_accuracy: 0.9260 - lr: 4.5049e-05
Epoch 47/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0262 - accuracy: 0.9912 - val_loss: 0.3518 - val_accuracy: 0.9257 - lr: 4.0762e-05
Epoch 48/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0266 - accuracy: 0.9918 - val_loss: 0.3606 - val_accuracy: 0.9287 - lr: 3.6883e-05
Epoch 49/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0235 - accuracy: 0.9934 - val_loss: 0.3584 - val_accuracy: 0.9267 - lr: 3.3373e-05
Epoch 50/50
142/142 [==============================] - 9s 66ms/step - loss: 0.0193 - accuracy: 0.9945 - val_loss: 0.3532 - val_accuracy: 0.9250 - lr: 3.0197e-05
94/94 [==============================] - 1s 10ms/step - loss: 0.3272 - accuracy: 0.9277
CNN Error: 7.23%
In [13]:
model.summary()
Model: "sequential_2"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d_6 (Conv2D)           (None, 126, 126, 64)      640       
                                                                 
 max_pooling2d_6 (MaxPooling  (None, 63, 63, 64)       0         
 2D)                                                             
                                                                 
 dropout_10 (Dropout)        (None, 63, 63, 64)        0         
                                                                 
 conv2d_7 (Conv2D)           (None, 61, 61, 128)       73856     
                                                                 
 max_pooling2d_7 (MaxPooling  (None, 30, 30, 128)      0         
 2D)                                                             
                                                                 
 dropout_11 (Dropout)        (None, 30, 30, 128)       0         
                                                                 
 conv2d_8 (Conv2D)           (None, 28, 28, 256)       295168    
                                                                 
 max_pooling2d_8 (MaxPooling  (None, 14, 14, 256)      0         
 2D)                                                             
                                                                 
 dropout_12 (Dropout)        (None, 14, 14, 256)       0         
                                                                 
 flatten_2 (Flatten)         (None, 50176)             0         
                                                                 
 dense_6 (Dense)             (None, 512)               25690624  
                                                                 
 dropout_13 (Dropout)        (None, 512)               0         
                                                                 
 dense_7 (Dense)             (None, 256)               131328    
                                                                 
 dropout_14 (Dropout)        (None, 256)               0         
                                                                 
 dense_8 (Dense)             (None, 15)                3855      
                                                                 
=================================================================
Total params: 26,195,471
Trainable params: 26,195,471
Non-trainable params: 0
_________________________________________________________________

Final 128 x 128 Model¶

In [10]:
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<15:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

callback = LearningRateScheduler(scheduleLR)
history = model.fit(X_train,y_train, validation_data=(X_val,y_val),epochs=50, batch_size=64,callbacks=[callback])
model.save_weights("./Best Model Weights/bestCNN128by128.h5")
scores = model.evaluate(X_test,y_test)
print("CNN Error: %.2f%%" % (100-scores[1]*100))
plotAUC(history)
Epoch 1/50
142/142 [==============================] - 10s 68ms/step - loss: 2.4376 - accuracy: 0.1844 - val_loss: 1.9839 - val_accuracy: 0.3913 - lr: 0.0010
Epoch 2/50
142/142 [==============================] - 9s 60ms/step - loss: 1.7014 - accuracy: 0.4513 - val_loss: 1.4992 - val_accuracy: 0.5040 - lr: 0.0010
Epoch 3/50
142/142 [==============================] - 8s 60ms/step - loss: 1.2909 - accuracy: 0.5904 - val_loss: 1.2357 - val_accuracy: 0.6217 - lr: 0.0010
Epoch 4/50
142/142 [==============================] - 8s 60ms/step - loss: 0.9580 - accuracy: 0.6944 - val_loss: 0.7227 - val_accuracy: 0.7710 - lr: 0.0010
Epoch 5/50
142/142 [==============================] - 8s 60ms/step - loss: 0.6989 - accuracy: 0.7779 - val_loss: 1.5557 - val_accuracy: 0.5613 - lr: 0.0010
Epoch 6/50
142/142 [==============================] - 9s 60ms/step - loss: 0.5968 - accuracy: 0.8134 - val_loss: 0.5501 - val_accuracy: 0.8313 - lr: 0.0010
Epoch 7/50
142/142 [==============================] - 9s 60ms/step - loss: 0.4103 - accuracy: 0.8663 - val_loss: 0.4637 - val_accuracy: 0.8657 - lr: 0.0010
Epoch 8/50
142/142 [==============================] - 9s 60ms/step - loss: 0.3413 - accuracy: 0.8918 - val_loss: 0.4313 - val_accuracy: 0.8697 - lr: 0.0010
Epoch 9/50
142/142 [==============================] - 9s 60ms/step - loss: 0.2805 - accuracy: 0.9121 - val_loss: 0.3907 - val_accuracy: 0.8850 - lr: 0.0010
Epoch 10/50
142/142 [==============================] - 9s 60ms/step - loss: 0.2318 - accuracy: 0.9259 - val_loss: 0.4379 - val_accuracy: 0.8733 - lr: 0.0010
Epoch 11/50
142/142 [==============================] - 9s 60ms/step - loss: 0.2156 - accuracy: 0.9282 - val_loss: 0.4541 - val_accuracy: 0.8790 - lr: 0.0010
Epoch 12/50
142/142 [==============================] - 9s 60ms/step - loss: 0.2047 - accuracy: 0.9352 - val_loss: 0.3602 - val_accuracy: 0.9027 - lr: 0.0010
Epoch 13/50
142/142 [==============================] - 9s 60ms/step - loss: 0.1462 - accuracy: 0.9528 - val_loss: 0.3841 - val_accuracy: 0.8963 - lr: 0.0010
Epoch 14/50
142/142 [==============================] - 9s 61ms/step - loss: 0.1699 - accuracy: 0.9462 - val_loss: 0.3787 - val_accuracy: 0.9030 - lr: 0.0010
Epoch 15/50
142/142 [==============================] - 9s 62ms/step - loss: 0.1329 - accuracy: 0.9586 - val_loss: 0.5032 - val_accuracy: 0.8830 - lr: 0.0010
Epoch 16/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0984 - accuracy: 0.9685 - val_loss: 0.5633 - val_accuracy: 0.8653 - lr: 9.0484e-04
Epoch 17/50
142/142 [==============================] - 9s 60ms/step - loss: 0.1086 - accuracy: 0.9658 - val_loss: 0.3868 - val_accuracy: 0.9030 - lr: 8.1873e-04
Epoch 18/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0885 - accuracy: 0.9732 - val_loss: 0.3589 - val_accuracy: 0.9127 - lr: 7.4082e-04
Epoch 19/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0702 - accuracy: 0.9770 - val_loss: 0.3620 - val_accuracy: 0.9087 - lr: 6.7032e-04
Epoch 20/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0556 - accuracy: 0.9814 - val_loss: 0.4220 - val_accuracy: 0.9060 - lr: 6.0653e-04
Epoch 21/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0528 - accuracy: 0.9829 - val_loss: 0.3712 - val_accuracy: 0.9127 - lr: 5.4881e-04
Epoch 22/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0502 - accuracy: 0.9840 - val_loss: 0.3745 - val_accuracy: 0.9187 - lr: 4.9659e-04
Epoch 23/50
142/142 [==============================] - 9s 65ms/step - loss: 0.0420 - accuracy: 0.9873 - val_loss: 0.3507 - val_accuracy: 0.9193 - lr: 4.4933e-04
Epoch 24/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0411 - accuracy: 0.9855 - val_loss: 0.3464 - val_accuracy: 0.9223 - lr: 4.0657e-04
Epoch 25/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0360 - accuracy: 0.9898 - val_loss: 0.3405 - val_accuracy: 0.9183 - lr: 3.6788e-04
Epoch 26/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0315 - accuracy: 0.9905 - val_loss: 0.4125 - val_accuracy: 0.9063 - lr: 3.3287e-04
Epoch 27/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0329 - accuracy: 0.9901 - val_loss: 0.3472 - val_accuracy: 0.9217 - lr: 3.0119e-04
Epoch 28/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0258 - accuracy: 0.9924 - val_loss: 0.3901 - val_accuracy: 0.9183 - lr: 2.7253e-04
Epoch 29/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0254 - accuracy: 0.9912 - val_loss: 0.3741 - val_accuracy: 0.9173 - lr: 2.4660e-04
Epoch 30/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0289 - accuracy: 0.9917 - val_loss: 0.3838 - val_accuracy: 0.9250 - lr: 2.2313e-04
Epoch 31/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0234 - accuracy: 0.9916 - val_loss: 0.3798 - val_accuracy: 0.9180 - lr: 2.0190e-04
Epoch 32/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0226 - accuracy: 0.9930 - val_loss: 0.3775 - val_accuracy: 0.9180 - lr: 1.8268e-04
Epoch 33/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0250 - accuracy: 0.9916 - val_loss: 0.3916 - val_accuracy: 0.9203 - lr: 1.6530e-04
Epoch 34/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0164 - accuracy: 0.9947 - val_loss: 0.3988 - val_accuracy: 0.9237 - lr: 1.4957e-04
Epoch 35/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0186 - accuracy: 0.9941 - val_loss: 0.3775 - val_accuracy: 0.9193 - lr: 1.3534e-04
Epoch 36/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0216 - accuracy: 0.9936 - val_loss: 0.4080 - val_accuracy: 0.9153 - lr: 1.2246e-04
Epoch 37/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0163 - accuracy: 0.9948 - val_loss: 0.3722 - val_accuracy: 0.9217 - lr: 1.1080e-04
Epoch 38/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0184 - accuracy: 0.9951 - val_loss: 0.3908 - val_accuracy: 0.9187 - lr: 1.0026e-04
Epoch 39/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0176 - accuracy: 0.9948 - val_loss: 0.4315 - val_accuracy: 0.9170 - lr: 9.0718e-05
Epoch 40/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0212 - accuracy: 0.9921 - val_loss: 0.3798 - val_accuracy: 0.9223 - lr: 8.2085e-05
Epoch 41/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0165 - accuracy: 0.9959 - val_loss: 0.3690 - val_accuracy: 0.9227 - lr: 7.4273e-05
Epoch 42/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0160 - accuracy: 0.9952 - val_loss: 0.3824 - val_accuracy: 0.9240 - lr: 6.7205e-05
Epoch 43/50
142/142 [==============================] - 9s 64ms/step - loss: 0.0142 - accuracy: 0.9958 - val_loss: 0.3983 - val_accuracy: 0.9190 - lr: 6.0810e-05
Epoch 44/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0146 - accuracy: 0.9956 - val_loss: 0.3850 - val_accuracy: 0.9237 - lr: 5.5023e-05
Epoch 45/50
142/142 [==============================] - 9s 62ms/step - loss: 0.0110 - accuracy: 0.9963 - val_loss: 0.3866 - val_accuracy: 0.9223 - lr: 4.9787e-05
Epoch 46/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0141 - accuracy: 0.9953 - val_loss: 0.3911 - val_accuracy: 0.9223 - lr: 4.5049e-05
Epoch 47/50
142/142 [==============================] - 9s 61ms/step - loss: 0.0150 - accuracy: 0.9956 - val_loss: 0.3933 - val_accuracy: 0.9203 - lr: 4.0762e-05
Epoch 48/50
142/142 [==============================] - 9s 60ms/step - loss: 0.0137 - accuracy: 0.9957 - val_loss: 0.3739 - val_accuracy: 0.9270 - lr: 3.6883e-05
Epoch 49/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0148 - accuracy: 0.9955 - val_loss: 0.4008 - val_accuracy: 0.9227 - lr: 3.3373e-05
Epoch 50/50
142/142 [==============================] - 9s 63ms/step - loss: 0.0141 - accuracy: 0.9952 - val_loss: 0.3816 - val_accuracy: 0.9227 - lr: 3.0197e-05
94/94 [==============================] - 1s 9ms/step - loss: 0.3254 - accuracy: 0.9280
CNN Error: 7.20%
In [8]:
model.summary()
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d (Conv2D)             (None, 126, 126, 64)      640       
                                                                 
 max_pooling2d (MaxPooling2D  (None, 63, 63, 64)       0         
 )                                                               
                                                                 
 dropout (Dropout)           (None, 63, 63, 64)        0         
                                                                 
 conv2d_1 (Conv2D)           (None, 61, 61, 128)       73856     
                                                                 
 max_pooling2d_1 (MaxPooling  (None, 30, 30, 128)      0         
 2D)                                                             
                                                                 
 dropout_1 (Dropout)         (None, 30, 30, 128)       0         
                                                                 
 conv2d_2 (Conv2D)           (None, 28, 28, 256)       295168    
                                                                 
 max_pooling2d_2 (MaxPooling  (None, 14, 14, 256)      0         
 2D)                                                             
                                                                 
 dropout_2 (Dropout)         (None, 14, 14, 256)       0         
                                                                 
 flatten (Flatten)           (None, 50176)             0         
                                                                 
 dense (Dense)               (None, 512)               25690624  
                                                                 
 dropout_3 (Dropout)         (None, 512)               0         
                                                                 
 dense_1 (Dense)             (None, 256)               131328    
                                                                 
 dropout_4 (Dropout)         (None, 256)               0         
                                                                 
 dense_2 (Dense)             (None, 15)                3855      
                                                                 
=================================================================
Total params: 26,195,471
Trainable params: 26,195,471
Non-trainable params: 0
_________________________________________________________________
In [5]:
# pip install pydot
# pip install graphviz
# conda install graphviz
# Restart kernal after installation
plot_model(model,show_shapes=True,show_layer_names=True)
Out[5]:

Load 128 x 128 Model¶

In [4]:
from tensorflow.keras.callbacks import LearningRateScheduler

def scheduleLR(epoch,lr):
    if epoch<15:
        return lr
    else:
        return lr*tf.math.exp(-0.1)
    
model = Sequential()
model.add(Conv2D(64, (3, 3), activation='relu',input_shape=(128,128,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(15,activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

callback = LearningRateScheduler(scheduleLR)
model.load_weights("./Best Model Weights/bestCNN128by128.h5")

Final 31 by 31 model: Test Accuracy: 95.57%
Validation Accuracy: 95.30%

Final 128 by 128 model: Test Accuracy: 92.8%
Validation Accuracy: 92.80%

The 31 by 31 model is achieving a better test and validation accuracy than 128 by 128 model. This can be due to smaller images containing more sufficient information whereas the larger image might introduce more complexity which makes it harder for the model to capture the patterns.

All in all, this assignment has allowed me to learn more in depth about image classification using CNN and how image classification is important in real world applications

In [ ]: